Ubuntu下Oracle数据库迁移常见步骤
expdp/impdp或RMAN对源数据库进行全量备份,确保数据安全。SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');查询)。expdp/impdp)、RMAN工具,确保网络互通(开放1521端口)。sysdba身份登录,创建用于存放导出文件的逻辑目录(需对应Ubuntu实际路径):sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY tmpDir AS '/home/oracle/expdp_dir';
SQL> GRANT READ, WRITE ON DIRECTORY tmpDir TO your_user;
expdp导出指定对象(如dbTest schema),生成.dmp文件和日志:expdp your_user/your_password@localhost:1521/ORCL schemas=dbTest directory=tmpDir dumpfile=export_20251025.dmp logfile=expdp_export.log
使用scp将.dmp文件从源Ubuntu复制到目标Ubuntu(假设目标IP为192.168.1.101):
scp -P 22 /home/oracle/expdp_dir/export_20251025.dmp oracle@192.168.1.101:/home/oracle/expdp_dir/
sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY tmpDir AS '/home/oracle/expdp_dir';
SQL> GRANT READ, WRITE ON DIRECTORY tmpDir TO your_user;
impdp导入.dmp文件,可通过PARALLEL参数加速(如PARALLEL=4):impdp your_user/your_password@localhost:1521/ORCL schemas=dbTest directory=tmpDir dumpfile=export_20251025.dmp logfile=impdp_import.log
rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG TO DEVICE TYPE DISK FORMAT '/home/oracle/rman_bkp/%U';
将备份文件复制到目标Ubuntu的指定目录(如/home/oracle/rman_bkp/):
scp -P 22 oracle@source_ip:/home/oracle/rman_bkp/* oracle@target_ip:/home/oracle/rman_bkp/
NOMOUNT状态,执行恢复:sqlplus / as sysdba
SQL> STARTUP NOMOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
SQL> ALTER DATABASE OPEN;
sudo systemctl stop oracle
rsync复制数据文件($ORACLE_BASE/oradata)、控制文件($ORACLE_BASE/fast_recovery_area)、重做日志文件到目标Ubuntu对应目录:rsync -avz /home/oracle/oradata/ oracle@target_ip:/home/oracle/oradata/
sudo systemctl start oracle