Ubuntu环境下Oracle数据库常见数据迁移方法
Data Pump是Oracle推荐的高性能数据迁移工具,支持增量迁移、并行处理和过滤功能,适用于大多数场景。
sqlplus / as sysdba
CREATE OR REPLACE DIRECTORY tmpDir AS '/tempFile';
② 使用expdp导出数据(可指定schemas、表或全库):expdp username/password@源IP:端口/服务名 schemas=dbTest directory=tmpDir dumpfile=export.dmp logfile=export.log
③ 将导出的.dmp文件复制到目标服务器(使用scp):scp -P 目标端口 /tempFile/export.dmp 目标用户@目标IP:/home/tempFile
sqlplus / as sysdba
CREATE OR REPLACE DIRECTORY tmpDir AS '/tempFile';
② 使用impdp导入数据(可指定并行度、表空间映射):impdp username/password@目标IP:端口/服务名 schemas=dbTest directory=tmpDir dumpfile=export.dmp job_name=myjob
注:若需跨平台迁移,可通过REMAP_TABLESPACE参数调整表空间路径(如REMAP_TABLESPACE=源表空间:目标表空间)。RMAN适用于实例级迁移(如升级数据库版本、跨平台迁移),支持完整数据库备份与恢复。
MOUNT状态并开启只读模式:sqlplus / as sysdba
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;
② 使用RMAN将数据库转换为通用格式(目标平台需为Linux):rman target /
CONVERT DATABASE NEW DATABASE TO PLATFORM 'Linux' FORMAT '/tmp/%U';
③ 将转换后的文件(位于/tmp目录)复制到目标服务器。NOMOUNT状态:sqlplus / as sysdba
STARTUP NOMOUNT;
② 执行RMAN恢复脚本(crdb.sql,通常由RMAN生成):rman target /
@/目标目录/crdb.sql
注:RMAN迁移需确保源与目标数据库的字符集、版本兼容。若源与目标服务器操作系统版本、Oracle版本完全一致,可直接复制数据文件(高效但灵活性低)。
sudo systemctl stop oracle
② 使用rsync复制数据文件(包括数据文件、控制文件、重做日志文件):rsync -avz /u01/app/oracle/oradata/源数据库/ 目标用户@目标IP:/u01/app/oracle/oradata/目标数据库/
③ 启动目标数据库:sudo systemctl start oracle
注:需提前备份目标服务器上的现有数据,避免覆盖。SQL Developer是Oracle官方图形化管理工具,支持第三方数据库(MySQL、SQL Server、Access等)到Oracle的迁移,无需手动编写脚本。
Network Link或Copy to Oracle选项)。Navicat是一款商业数据库管理工具,支持Oracle与其他数据库之间的可视化迁移,操作简单,适合非技术人员。
expdp、RMAN或物理备份),防止数据丢失;SQL*Plus比对源与目标数据);AL32UTF8),避免乱码;CREATE TABLE、INSERT);PARALLEL参数(如impdp PARALLEL=8)提升速度。