在开始迁移前,需完成以下关键步骤以避免数据丢失或操作失败:
oracle-instantclient-basic、oracle-instantclient-sqlplus、oracle-instantclient-data-pump),确保sqlplus、expdp、impdp命令可用。/u01/app/oracle/dumpfiles)和逻辑目录的路径,赋予Oracle用户(如oracle)读写权限。Data Pump是Oracle提供的高效数据迁移工具,支持并行处理、增量迁移和对象级过滤,适用于大多数场景。
/u01/app/oracle/tmpdir)。sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY TMP_DIR AS '/u01/app/oracle/tmpdir';
SQL> GRANT READ, WRITE ON DIRECTORY TMP_DIR TO your_user; -- 授权给迁移用户
expdp命令导出指定schema或表数据,生成.dmp文件。expdp your_user/your_password@source_db schemas=your_schema directory=TMP_DIR dumpfile=export_20251010.dmp logfile=expdp_export.log
scp命令将.dmp文件复制到Ubuntu目标服务器的对应目录(如/u01/app/oracle/dumpfiles)。scp -P 22 your_user@source_ip:/u01/app/oracle/tmpdir/export_20251010.dmp /u01/app/oracle/dumpfiles/
sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY TMP_DIR AS '/u01/app/oracle/dumpfiles';
SQL> GRANT READ, WRITE ON DIRECTORY TMP_DIR TO your_user;
impdp命令导入.dmp文件,可通过REMAP_TABLESPACE调整表空间映射(如源数据库的USERS表空间映射到目标数据库的APP_DATA)。impdp your_user/your_password@target_db schemas=your_schema directory=TMP_DIR dumpfile=export_20251010.dmp logfile=impdp_import.log remap_tablespace=USERS:APP_DATA
PARALLEL=4参数提升导入速度(如impdp ... parallel=4)。RMAN适用于需要迁移整个数据库实例(包括数据文件、控制文件、归档日志)的场景,尤其适合跨平台或版本升级。
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN READ ONLY;
rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG FORMAT '/u01/app/oracle/backup/%U';
RMAN> BACKUP CURRENT CONTROLFILE FORMAT '/u01/app/oracle/backup/controlfile.bak';
RMAN> EXIT;
使用scp命令将备份文件复制到Ubuntu目标服务器的对应目录(如/u01/app/oracle/backup)。
scp -P 22 your_user@source_ip:/u01/app/oracle/backup/* /u01/app/oracle/backup/
/u01/app/oracle/oradata/target_db)。rman target /
RMAN> RESTORE CONTROLFILE FROM '/u01/app/oracle/backup/controlfile.bak';
RMAN> ALTER DATABASE MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
CONVERT DATABASE转换(需提前生成转换脚本)。SQL> ALTER DATABASE OPEN;
CONVERT DATABASE TRANSPORT SCRIPT),并在目标服务器执行该脚本。EXP/IMP是Oracle的传统迁移工具,适用于10g以下版本或小数据量场景,效率低于Data Pump。
使用exp命令导出数据,生成.dmp文件。
exp your_user/your_password@source_db file=/u01/app/oracle/tmpdir/export_20251010.dmp log=exp_export.log owner=your_schema
使用scp命令将.dmp文件复制到Ubuntu目标服务器的对应目录(如/u01/app/oracle/dumpfiles)。
使用imp命令导入数据,可通过IGNORE=Y忽略创建错误(如表已存在)。
imp your_user/your_password@target_db file=/u01/app/oracle/dumpfiles/export_20251010.dmp log=imp_import.log fromuser=your_schema touser=your_schema ignore=y
imp的INDEXFILE参数生成建表脚本,修改表空间后再导入)。Navicat是一款图形化数据库管理工具,支持Oracle数据库迁移,操作简便,适合不熟悉命令行的用户。
迁移完成后,需进行以下验证以确保数据一致性:
SELECT COUNT(*) FROM table_name)。DBA_OBJECTS视图查询)。