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. 旧主关闭
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. 最佳实践
- 测试环境:先验证
- 业务低峰:切换
- 回滚方案:必备
- 监控同步:及时
- 数据验证:完整
- 性能测试:对比
- 应用配置:更新
- 团队培训:能力
- 文档化:流程
- 应急方案:备用
14. 参考资料
[1] Oracle Cloud Infrastructure Database Migration Guide https://docs.oracle.com/en/cloud/paas/database-migration/