Oracle 数据库迁移方案选择

Oracle 数据库迁移方案选择

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

数据库迁移方案选择指南[1]:

详细见:Oracle 零停机迁移方案对比


2. 方案对比

方案停机跨平台跨版本数据量成本
Data Pump
RMAN有限
TTS / XTTS有限中大
Data Guard切换有限
GoldenGate任意
ZDM任意

3. Data Pump

3.1 适用

- 小数据
- 跨平台
- 跨版本
- 重建

3.2 流程

# 源导出
expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=full.dmp FULL=Y

# 传输
scp full.dmp target:/tmp/

# 目标导入
impdp system/pwd DIRECTORY=dpump_dir DUMPFILE=full.dmp FULL=Y

详细见:Oracle Data Pump 全集

3.3 优劣

+ 简单
+ 跨平台
+ 跨版本
+ 重整数据
- 停机长
- 大数据慢

4. RMAN

4.1 适用

- 同平台
- 同版本
- 中等数据
- 备份恢复

4.2 流程

# 源备份
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

# 传输
scp backup target:/backup/

# 目标恢复
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;

详细见:Oracle RMAN 备份恢复

4.3 优劣

+ 物理
+ 快
+ 备份恢复
- 同平台
- 同版本

5. TTS / XTTS

5.1 适用

- 跨平台
- 同版本
- 大数据
- 短停机

5.2 流程

1. 初始全量传输
2. 持续增量
3. 停机
4. 最后增量
5. 传输元数据
6. 切换

5.3 优劣

+ 跨平台
+ 短停机
+ 大数据
- 表空间自包含
- Endian

详细见:Oracle TTS 传输表空间详解


6. Data Guard

6.1 适用

- 同平台
- 同版本
- 大数据
- 切换停机

6.2 流程

1. 创建 Standby
2. 同步
3. Switchover
4. 应用切换
5. 旧主关闭

详细见:Oracle Data Guard 部署详解

6.3 优劣

+ 简单
+ 切换快
+ 备份
- 同平台
- 同版本

7. GoldenGate

7.1 适用

- 跨平台
- 跨版本
- 异构
- 零停机

7.2 流程

1. 安装 GG
2. 启用补充日志
3. 初始数据
4. 启动 Extract
5. 启动 Replicat
6. 监控 lag
7. 切换

详细见:Oracle GoldenGate 全集

7.3 优劣

+ 零停机
+ 跨平台
+ 异构
- 复杂
- 成本

8. ZDM

8.1 适用

- 物理迁移
- OCI / 同平台
- 零停机

8.2 流程

zdmcli migrate database -sourcesid orcl -sourcenode src -targetnode tgt -rsp /tmp/zdm.rsp -eval
zdmcli migrate database ...

详细见:Oracle Cloud 部署详解

8.3 优劣

+ 自动化
+ 零停机
+ OCI
- 物理
- OCI 专用

9. 选择决策树

是否跨平台?
├─ 是
│  ├─ 数据量?
│  │  ├─ 小:Data Pump
│  │  ├─ 中:XTTS
│  │  └─ 大:GoldenGate / ZDM
└─ 否
   ├─ 同版本?
   │  ├─ 是:Data Guard / RMAN
   │  └─ 否:升级路径
   └─ 停机要求?
      ├─ 零:GoldenGate
      ├─ 短:XTTS / Data Guard
      └─ 长:Data Pump

10. 评估因素

10.1 业务

- 停机时间
- 数据量
- 关键程度

10.2 技术

- 平台
- 版本
- 网络

10.3 资源

- 成本
- 人员
- 时间

11. 切换流程

11.1 准备

1. 验证同步
2. 应用停止
3. 最终同步
4. 应用配置更新

11.2 执行

1. 停源写入
2. 最终同步
3. 切换连接
4. 验证
5. 应用启动

11.3 验证

-- 数据
SELECT 'EMPLOYEES', COUNT(*) FROM employees;

-- 对象
SELECT COUNT(*) FROM dba_objects WHERE status = 'VALID';

-- 性能
@?/rdbms/admin/awrddrpt.sql

11.4 回滚

- ZDM:ROLLBACK
- GoldenGate:反向
- Data Guard:Switchover 回
- Data Pump:原库保留

12. 风险

12.1 数据丢失

- 同步验证
- 最终同步
- 业务确认

12.2 性能问题

- 测试
- AWR 对比
- 优化

12.3 应用问题

- 配置更新
- 字符集
- 时区

13. 常见坑

13.1 字符集

SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET';
-- 源/目标必须一致

13.2 时区

- DB Timezone
- OS Timezone
- 一致

13.3 字符串排序

- NLS_SORT
- 排序变化

13.4 统计信息

- 重新收集
- 直方图

14. 最佳实践

  1. 测试环境验证:可行
  2. 业务低峰切换:影响小
  3. 回滚方案:必备
  4. 监控同步:及时
  5. 数据验证:完整
  6. 性能对比:评估
  7. 应用配置:更新
  8. 团队培训:能力
  9. 文档化:流程
  10. 应急方案:备用

15. 参考资料

[1] Oracle Cloud Infrastructure Database Migration Guide https://docs.oracle.com/en/cloud/paas/database-migration/