一、迁移前的准备工作
SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');查询),以及操作系统位数(如均为64位Linux,避免跨位数迁移导致的问题)。/u01/app/oracle/oradata、临时目录/tmp)。RMAN或expdp全量备份源数据库,确保数据安全(如RMAN> BACKUP DATABASE PLUS ARCHIVELOG;备份数据文件、归档日志和控制文件;expdp username/password@IP:port/dbschema schemas=SCHEMA_NAME directory=DUMP_DIR dumpfile=full.dmp logfile=exp.log;导出逻辑数据)。lsnrctl stop停止监听,sqlplus / as sysdba执行SHUTDOWN IMMEDIATE关闭数据库)。二、常用迁移方法
适用于跨平台、跨版本的逻辑数据迁移,灵活性高,但性能低于物理迁移。
sqlplus / as sysdba → CREATE OR REPLACE DIRECTORY DMP_DIR AS '/tmp';。expdp username/password@IP:port/dbschema schemas=SCHEMA_NAME directory=DMP_DIR dumpfile=exp.dmp logfile=exp.log;(可添加CONTENT=ALL导出所有数据,COMPRESSION=ALL压缩导出文件)。scp将exp.dmp复制到目标服务器(如scp -P 22 exp.dmp oracle@target_ip:/tmp;)。sqlplus / as sysdba → CREATE OR REPLACE DIRECTORY DMP_DIR AS '/tmp';。impdp username/password@IP:port/dbschema schemas=SCHEMA_NAME directory=DMP_DIR dumpfile=exp.dmp logfile=imp.log;(可添加TABLE_EXISTS_ACTION=APPEND追加数据,REMAP_SCHEMA=SOURCE_SCHEMA:TARGET_SCHEMA映射用户)。适用于同平台或支持跨平台的物理数据迁移,性能高,保持数据库物理结构一致性。
rman target / → RUN { ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT '/tmp/%U'; BACKUP DATABASE PLUS ARCHIVELOG; BACKUP CURRENT CONTROLFILE FORMAT '/tmp/controlfile.bak'; }(备份数据文件、归档日志和控制文件)。scp将备份文件复制到目标服务器(如scp /tmp/*.bak oracle@target_ip:/u01/backup;)。/u01/app/oracle/oradata),并传输控制文件、数据文件备份到对应目录。rman target / → RESTORE CONTROLFILE FROM '/u01/backup/controlfile.bak';。sqlplus / as sysdba → STARTUP NOMOUNT;。rman target / → RESTORE DATABASE; RECOVER DATABASE;(恢复数据文件和归档日志)。sqlplus / as sysdba → ALTER DATABASE OPEN;(若跨平台,需使用RMAN CONVERT DATABASE转换数据文件格式,参考Oracle官方文档)。适用于需要零停机或实时同步的场景,支持跨平台、跨版本。
ogg用户及目录(如/u01/app/goldengate)。extract进程(抽取数据):编辑extract.prm文件,设置USERID、EXTTRAIL(本地trail文件路径)、TABLE(需同步的表)。datapump进程(传输数据到目标端):编辑datapump.prm文件,设置USERID、EXTTRAIL(源端trail路径)、RMTTRAIL(目标端trail路径)。ggsci → ADD EXTRACT ext1, TRANLOG, BEGIN NOW; ADD EXTTRAIL /u01/app/goldengate/exttrail; START EXTRACT ext1;(启动抽取进程);ADD DATAPUMP dp1, EXTTRAIL /u01/app/goldengate/exttrail, RMTTRAIL /u01/app/goldengate/rmttrail; START DATAPUMP dp1;(启动传输进程)。replicat进程(应用数据到目标数据库):编辑replicat.prm文件,设置USERID、RMTTRAIL(目标端trail路径)、MAP(表映射规则)。ggsci → ADD REPLICAT rep1, EXTTRAIL /u01/app/goldengate/rmttrail; START REPLICAT rep1;(启动复制进程)。ggsci执行INFO EXTRACT ext1、INFO REPLICAT rep1查看进程状态,确认LAG(延迟)为0,表示同步正常。三、迁移后验证
SELECT COUNT(*) FROM table_name;)、关键字段值(如主键、时间戳),确保数据无遗漏或错误。AWR报告(SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(...));)分析目标数据库的性能指标(如CPU使用率、I/O延迟),调整参数(如SGA_TARGET、PGA_AGGREGATE_TARGET)优化性能。四、注意事项
rsync替代scp断点续传)。expdp.log、impdp.log、rman.log、ggsci日志,及时处理错误(如ORA-39002表示无效操作,ORA-39087表示目录不存在)。expdp/impdp需要EXP_FULL_DATABASE/IMP_FULL_DATABASE角色,RMAN需要SYSBACKUP权限,OGG需要GGADMIN角色)。