迁移总览与方案选择
方案一 Data Pump 逻辑迁移步骤
sqlplus / as sysdbacreate or replace directory tmpDir as '/tempFile';grant read, write on directory tmpDir to <user>;expdp system/password@//host:port/service full=Y directory=tmpDir dumpfile=full.dmp logfile=full.logexpdp scott/tiger@//host:port/service schemas=SCOTT directory=tmpDir dumpfile=scott.dmp logfile=scott.logexpdp scott/tiger@//host:port/service tables=EMP,DEPT directory=tmpDir dumpfile=tabs.dmp logfile=tabs.logscp -P 2222 /tempFile/*.dmp ubuntu@target_ip:/home/ubuntu/dmp/sqlplus / as sysdbacreate or replace directory tmpDir as '/home/ubuntu/dmp';grant read, write on directory tmpDir to <user>;impdp system/password@//target_host:port/service full=Y directory=tmpDir dumpfile=full.dmp logfile=imp_full.logimpdp scott/tiger@//target_host:port/service schemas=SCOTT directory=tmpDir dumpfile=scott.dmp logfile=imp_scott.log remap_schema=SCOTT:SCOTT_NEWimpdp scott/tiger@//target_host:port/service tables=EMP,DEPT directory=tmpDir dumpfile=tabs.dmp logfile=imp_tabs.log方案二 RMAN 跨平台物理迁移步骤
shutdown immediate; → startup mount; → alter database open read only;(跨平台传输表空间/整库常用只读)rman target /CONVERT DATABASE NEW DATABASE 'ORCL' TRANSPORT SCRIPT '/tmp/transport.sql' TO PLATFORM 'Linux x86 64-bit' FORMAT '/tmp/%U';scp -r /tmp/ORCL* ubuntu@target_ip:/u01/oradata/ORCL/DB_FILE_NAME_CONVERT = ('/old/path','/u01/oradata/ORCL')LOG_FILE_NAME_CONVERT = ('/old/path','/u01/oradata/ORCL')sqlplus / as sysdba → startup nomount pfile='/u01/app/oracle/admin/ORCL/pfile/initORCL.ora';@/u01/oradata/ORCL/transport.sqlalter database open resetlogs;(若 transport.sql 使用 resetlogs)迁移前后检查与常见问题
utlrp.sql 编译无效对象。create directory 与 grant。以上步骤覆盖在 Ubuntu 上使用 Data Pump 与 RMAN 的主流迁移路径;若需实现近零停机,可考虑 GoldenGate/OGG 进行在线同步后再切换。