Oracle 零停机迁移方案对比

Oracle 零停机迁移方案对比

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


1. 概述

零停机迁移方案对比[1]:

方案

  • ZDM(Zero Downtime Migration)
  • GoldenGate
  • Data Guard
  • Data Pump + GoldenGate
  • XTTS

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


2. 方案对比

方案停机时间跨平台跨版本复杂度成本
ZDM
GoldenGate
Data Guard切换时间否(同平台)有限
Data Pump + GG
XTTS

3. ZDM

3.1 概述

  • Oracle 官方
  • 物理迁移
  • 零停机

3.2 流程

1. 评估
2. 配置
3. 初始全量(在线)
4. 增量同步
5. 切换(短停机)
6. 验证

3.3 命令

$ZDM_HOME/bin/zdmcli migrate database \
  -sourcesid orcl \
  -sourcenode source-host \
  -targetnode target-host \
  -rsp /tmp/zdm.rsp \
  -eval

$ZDM_HOME/bin/zdmcli migrate database \
  -sourcesid orcl \
  -sourcenode source-host \
  -targetnode target-host \
  -rsp /tmp/zdm.rsp

4. GoldenGate

4.1 概述

  • 实时复制
  • 零停机
  • 异构

4.2 流程

1. 安装 GG
2. 源启用补充日志
3. 初始数据(Data Pump / EXP / RMAN)
4. 启动 Extract
5. 启动 Replicat
6. 监控 lag
7. 业务切换
8. 停止 GG

详细见:Oracle GoldenGate 全集

4.3 优势

- 跨平台
- 跨版本
- 异构
- 双向

4.4 缺点

- 复杂
- 成本高
- 维护

5. Data Guard 迁移

5.1 同平台

- 物理 Standby
- Switchover 切换
- 停机:切换时间(分钟)

5.2 流程

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

详细见:Oracle Data Guard 架构详解

5.3 限制

- 同平台
- 同版本(升级需特殊处理)
- 网络要求

6. Data Pump + GoldenGate

6.1 流程

1. 启动 GoldenGate Extract
2. Data Pump 导出源(带 SCN)
3. 传输到目标
4. Data Pump 导入目标
5. 启动 Replicat 从 SCN
6. 监控 lag
7. 业务切换

6.2 优势

- 灵活
- 跨平台
- 跨版本
- 可选表

7. XTTS

7.1 概述

  • 跨平台表空间传输
  • 增量减少停机

7.2 流程

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

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

7.3 优势

- 跨平台
- 大数据
- 不需要额外许可

7.4 限制

- 同版本或升级
- 表空间自包含
- Endian

8. 选择标准

8.1 数据量

- 小:Data Pump
- 中:XTTS
- 大:ZDM / GG / DG

8.2 停机要求

- 零:ZDM / GG
- 短:XTTS / DG
- 长:Data Pump

8.3 跨平台

- 是:ZDM / GG / XTTS / Data Pump
- 否:Data Guard

8.4 成本

- 低:Data Pump / XTTS / DG
- 中:ZDM
- 高:GoldenGate

9. 切换流程

9.1 准备

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

9.2 执行

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

9.3 回滚

- 准备回滚方案
- ZDM:ROLLBACK
- GG:反向复制
- DG:SWITCHOVER 回

10. 验证

10.1 数据

-- 行数
SELECT 'EMPLOYEES', COUNT(*) FROM employees
UNION ALL
SELECT 'DEPARTMENTS', COUNT(*) FROM departments;

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

10.2 业务

- 应用连接
- 业务流程
- 性能测试

10.3 性能

@?/rdbms/admin/awrddrpt.sql

详细见:Oracle 数据库升级性能评估


11. 回滚

11.1 ZDM

$ZDM_HOME/bin/zdmcli migrate database -jobid <id> -rollback

11.2 GoldenGate

- 反向 GG
- 数据回滚

11.3 Data Guard

- Switchover 回
- 旧主恢复

12. 常见坑与排错

12.1 同步延迟

- 网络优化
- 并行
- 监控 lag

12.2 字符集

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

12.3 时区

- 数据库时区
- 操作系统时区
- 一致

13. 最佳实践

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

14. 参考资料

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