温馨提示×

linux oracle怎么迁移

小樊
41
2026-07-28 11:28:38
栏目: 云计算

下面按常见场景给你一个清晰、可操作的 Linux 下 Oracle 数据库迁移方案。你可以先对照自己的情况,再选具体做法。


一、先明确迁移类型(很重要)

场景 推荐方式
同版本、同平台(Linux → Linux) RMAN 备份恢复 / Data Pump
跨版本升级 Data Pump + 升级
跨平台(如 Linux → Windows) Data Pump
整机迁移(含 OS) RMAN + 参数文件迁移
停机时间短 Data Guard / 增量 RMAN

二、最常见方案:RMAN 迁移(推荐)

适合:同版本、同平台、整库迁移

1️⃣ 源库准备

sqlplus / as sysdba
shutdown immediate;
startup mount;

2️⃣ RMAN 全备

rman target /
run {
  backup database plus archivelog;
}

备份文件默认在:

$ORACLE_HOME/dbs 或 fast_recovery_area

3️⃣ 拷贝文件到新服务器

scp -r /u01/app/oracle/fast_recovery_area oracle@new_server:/u01/app/oracle/

4️⃣ 新服务器恢复

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;

优点:完整、可靠
缺点:版本必须一致


三、用户级迁移(最常用):Data Pump

适合:只迁移用户、表、数据

1️⃣ 源库导出

expdp system/password \
schemas=scott \
directory=DATA_PUMP_DIR \
dumpfile=scott.dmp \
logfile=scott.log

查看目录:

select * from dba_directories;

2️⃣ 拷贝 dmp 文件

scp scott.dmp oracle@new_server:/u01/dump/

3️⃣ 新库导入

impdp system/password \
schemas=scott \
directory=DATA_PUMP_DIR \
dumpfile=scott.dmp \
logfile=imp_scott.log

优点:灵活、跨小版本
缺点:不包含实例参数、监听等


四、冷备迁移(最简单)

适合:允许停机

步骤

  1. 关闭数据库
shutdown immediate;
  1. 拷贝以下目录
$ORACLE_HOME/dbs
$ORACLE_BASE/oradata
  1. 新服务器:
  • 安装相同版本 Oracle
  • 拷贝文件到相同路径
  • 启动数据库

优点:简单
缺点:路径必须一致


五、迁移后必做检查

select name, open_mode from v$database;
select instance_name, status from v$instance;
select * from dba_objects where status='INVALID';

检查:

  • 监听
  • 参数文件
  • 字符集
  • 表空间

六、我可以帮你更精确

你可以直接告诉我:

  1. Oracle 版本(11g / 12c / 19c?)
  2. 是否跨服务器
  3. 是否允许停机
  4. 迁移的是整库还是某个用户

我可以给你一步一步的命令级方案

0