下面按常见场景给你一个清晰、可操作的 Linux 下 Oracle 数据库迁移方案。你可以先对照自己的情况,再选具体做法。
| 场景 | 推荐方式 |
|---|---|
| 同版本、同平台(Linux → Linux) | RMAN 备份恢复 / Data Pump |
| 跨版本升级 | Data Pump + 升级 |
| 跨平台(如 Linux → Windows) | Data Pump |
| 整机迁移(含 OS) | RMAN + 参数文件迁移 |
| 停机时间短 | Data Guard / 增量 RMAN |
✅ 适合:同版本、同平台、整库迁移
sqlplus / as sysdba
shutdown immediate;
startup mount;
rman target /
run {
backup database plus archivelog;
}
备份文件默认在:
$ORACLE_HOME/dbs 或 fast_recovery_area
scp -r /u01/app/oracle/fast_recovery_area oracle@new_server:/u01/app/oracle/
rman target /
startup nomount;
restore spfile from '/backup/path';
restore controlfile from '/backup/path';
alter database mount;
restore database;
recover database;
alter database open resetlogs;
✅ 优点:完整、可靠
❌ 缺点:版本必须一致
✅ 适合:只迁移用户、表、数据
expdp system/password \
schemas=scott \
directory=DATA_PUMP_DIR \
dumpfile=scott.dmp \
logfile=scott.log
查看目录:
select * from dba_directories;
scp scott.dmp oracle@new_server:/u01/dump/
impdp system/password \
schemas=scott \
directory=DATA_PUMP_DIR \
dumpfile=scott.dmp \
logfile=imp_scott.log
✅ 优点:灵活、跨小版本
❌ 缺点:不包含实例参数、监听等
✅ 适合:允许停机
shutdown immediate;
$ORACLE_HOME/dbs
$ORACLE_BASE/oradata
✅ 优点:简单
❌ 缺点:路径必须一致
select name, open_mode from v$database;
select instance_name, status from v$instance;
select * from dba_objects where status='INVALID';
检查:
你可以直接告诉我:
我可以给你一步一步的命令级方案 ✅