Oracle GoldenGate 经典架构详解

Oracle GoldenGate 经典架构详解

适用版本:Oracle GoldenGate 12c / 19c / 21c 文档版本:v1.0 / 2026-07


1. 概述

GoldenGate 经典架构是实时数据复制的核心[1]:

详细见:Oracle GoldenGate 全集


2. 架构

2.1 组件

- Manager:管理进程
- Extract:抽取源端变更
- Pump:传输到目标
- Collector:接收
- Replicat:应用
- Trail File:变更文件
- Checkpoint Table:检查点

2.2 数据流

Source DB → Extract → Local Trail → Pump → 
  Network → Remote Trail → Replicat → Target DB

3. Manager

3.1 启动

ggsci
> START MANAGER

3.2 配置

# mgr.prm
PORT 7809
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3
AUTOSTART ER *
AUTORESTART ER *, RETRIES 5, WAITMINUTES 3

4. Extract

4.1 配置

# ext1.prm
EXTRACT ext1
USERIDALIAS src
EXTTRAIL ./dirdat/lt
TABLE scott.*;

4.2 启动

> ADD EXTRACT ext1, TRANLOG, BEGIN NOW
> ADD EXTTRAIL ./dirdat/lt, EXTRACT ext1, MEGABYTES 50
> START EXTRACT ext1

4.3 模式

- TRANLOG:在线日志
- INTEGRATED TRANLOG(12c+):集成
- INITIALLOAD:初始化

5. Pump

5.1 配置

# pump1.prm
EXTRACT pump1
USERIDALIAS src
RMTHOST target, MGRPORT 7809
RMTTRAIL ./dirdat/rt
TABLE scott.*;

5.2 启动

> ADD EXTRACT pump1, EXTTRAILSOURCE ./dirdat/lt
> ADD RMTTRAIL ./dirdat/rt, EXTRACT pump1, MEGABYTES 50
> START EXTRACT pump1

6. Replicat

6.1 配置

# rep1.prm
REPLICAT rep1
USERIDALIAS tgt
ASSUMETARGETDEFS
MAP scott.*, TARGET scott.*;

6.2 启动

> ADD REPLICAT rep1, EXTTRAIL ./dirdat/rt
> START REPLICAT rep1

6.3 模式

- CLASSIC:经典
- INTEGRATED(12c+):集成
- COORDINATED:协调

7. Checkpoint

7.1 表

CREATE TABLE ggchkpt (
  group_name VARCHAR2(8),
  group_key NUMBER,
  seqno NUMBER,
  rba NUMBER,
  ...
);

7.2 添加

> ADD CHECKPOINTTABLE scott.ggchkpt

7.3 重要性

- 记录位置
- 重启不丢
- 必须配置

8. 参数文件

8.1 位置

# 老版本:dirprm
# 12c+:参数文件
GGSCHEMA scott

8.2 别名

# 数据库连接别名
> ADD CREDENTIALSTORE
> ALTER CREDENTIALSTORE ADD USER scott@src PASSWORD xxx ALIAS src
> ALTER CREDENTIALSTORE ADD USER scott@tgt PASSWORD xxx ALIAS tgt

9. DDL 支持

9.1 启用

# ext1.prm
DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE RETRYOP

# rep1.prm
DDL INCLUDE ALL

9.2 限制

- 部分 DDL 不支持
- 复杂对象
- 测试

10. 数据初始化

10.1 方法

- Data Pump
- TTS
- GoldenGate Initial Load
- RMAN

10.2 GoldenGate

# initial load extract
EXTRACT init1
USERIDALIAS src
RMTHOST target, MGRPORT 7809
RMTTASK REPLICAT, GROUP init1
TABLE scott.*;

详细见:Oracle Data Pump 全集


11. 监控

11.1 GGSCI

> INFO ALL
> INFO EXTRACT ext1, DETAIL
> STATS EXTRACT ext1
> STATS REPLICAT rep1
> LAG EXTRACT ext1
> LAG REPLICAT rep1

11.2 数据库

SELECT * FROM ggschema.ggchkpt;
SELECT process_name, status FROM v$goldengate_capture;

12. 故障处理

12.1 重复

- REPERROR
- DISCARD
- 异常表
# rep1.prm
REPERROR (DEFAULT, DISCARD)
DISCARDFILE ./dirrpt/rep1.dsc, APPEND, MEGABYTES 10

12.2 跳过

> ALTER REPLICAT rep1, SKIPTRANSACTION

13. 应用场景

13.1 实时复制

- 异地容灾
- 报表分流
- 零停机迁移

13.2 数据库迁移

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

13.3 数据集成

- 多源汇聚
- 实时数据仓库
- ETL

14. 常见坑与排错

14.1 Lag 大

- 性能
- 网络瓶颈
- Replicat 慢

14.2 Abend

- 检查日志
- 跳过或修复
- 重启

14.3 数据不一致

- 校验
- 重新同步

15. 最佳实践

  1. Checkpoint:必须
  2. Credential Store:安全
  3. Pump:传输
  4. 监控 Lag:及时
  5. DISCARD:异常
  6. DDL 谨慎:测试
  7. 初始化:正确
  8. 监控:GGSCI
  9. 文档:配置
  10. 演练:故障

16. 参考资料

[1] Oracle GoldenGate Classic Architecture 19c https://docs.oracle.com/en/middleware/goldengate/core/19.1/