Ubuntu环境下Oracle数据库迁移步骤解析
Oracle数据库迁移需根据源端与目标端的环境差异(如操作系统、版本、字节序)选择合适方法。以下是Ubuntu场景下常用的四种迁移方式及详细步骤,涵盖传统工具、高效工具及底层文件操作:
Data Pump是Oracle提供的高效数据迁移工具,支持跨版本、跨平台,且可通过并行操作提升速度。
sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/u01/app/oracle/dumpfiles';
expdp
命令导出指定对象(如schema、表),生成.dmp
文件及日志。expdp system/password@源数据库IP:1521/ORCL schemas=HR directory=DATA_PUMP_DIR dumpfile=hr_export.dmp logfile=hr_export.log
将生成的.dmp
文件从源服务器复制到目标Ubuntu服务器(使用scp
或rsync
):
scp hr_export.dmp ubuntu@目标服务器IP:/home/ubuntu/dumpfiles/
sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/home/ubuntu/dumpfiles';
impdp
命令导入数据,可通过REMAP_TABLESPACE
调整表空间映射(若目标端表空间名称不同)。impdp system/password@目标数据库IP:1521/ORCL schemas=HR directory=DATA_PUMP_DIR dumpfile=hr_export.dmp logfile=hr_import.log remap_tablespace=SOURCE_TS:TARGET_TS
RMAN(Recovery Manager)适用于需要迁移整个数据库实例的场景,支持跨平台但需注意字节序兼容性(同字节序可直接转换,不同则需用Data Pump替代)。
sqlplus / as sysdba
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN READ ONLY;
SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM WHERE PLATFORM_NAME = '目标平台名称';
crdb.sql
)。rman target /
RMAN> CONVERT DATABASE TRANSPORT SCRIPT 'crdb.sql' NEW DATABASE 'newdb' TO PLATFORM 'Ubuntu Linux IA (64-bit)' FORMAT '/tmp/%U';
crdb.sql
,创建目标数据库结构。sqlplus / as sysdba
SQL> @/home/ubuntu/crdb.sql
rman target /
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
SQL> ALTER DATABASE OPEN;
若源端与目标端Oracle版本一致、操作系统字节序相同(如均为Linux 64位),可直接拷贝数据库文件,快速完成迁移。
sudo systemctl stop oracle
rsync
拷贝数据文件、控制文件、重做日志文件及SPFILE到目标服务器(保留目录结构)。rsync -avz /u01/app/oracle/oradata/ORCL/ ubuntu@目标服务器IP:/u01/app/oracle/oradata/ORCL/
sudo chown -R oracle:oinstall /u01/app/oracle/oradata/ORCL/
sudo systemctl start oracle
EXP/IMP是Oracle早期提供的迁移工具,功能较Data Pump简单,适用于小数据量或低版本迁移。
exp
命令导出指定对象(如用户、表),生成.dmp
文件。exp system/password@源数据库IP:1521/ORCL file=hr_export.dmp owner=HR log=hr_export.log
将.dmp
文件复制到目标服务器(同Data Pump步骤)。
imp
命令导入数据,可通过IGNORE=Y
忽略创建错误(如对象已存在)。imp system/password@目标数据库IP:1521/ORCL file=hr_export.dmp fromuser=HR touser=HR ignore=y log=hr_import.log
V$TRANSPORTABLE_PLATFORM
视图检查字节序是否一致(不同字节序需用Data Pump替代RMAN转换)。