Oracle GoldenGate 全集

Oracle GoldenGate 全集

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


1. 概述

GoldenGate 是 Oracle 实时复制工具[1]:

特性

  • 实时
  • 异构
  • 零停机
  • 双向

详细见:Oracle GoldenGate 实时复制


2. 架构

2.1 组件

源 → Extract → Trail → Pump → Trail → Replicat → 目标

2.2 进程

  • Manager:管理
  • Extract:抽取
  • Pump:传输
  • Replicat:应用
  • Collector:接收(目标)

3. Manager

3.1 配置

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

3.2 启动

ggsci
GGSCI> START MGR
GGSCI> INFO MGR

4. Extract

4.1 准备源库

-- 启用补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

-- 归档模式
ALTER DATABASE ARCHIVELOG;

4.2 参数

# ext1.prm
EXTRACT ext1
USERID alice@orcl, PASSWORD pwd
EXTTRAIL ./dirdat/lt
TABLE scott.employees;
TABLE scott.departments;

4.3 创建

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

4.4 集成模式(12c+)

# 集成
EXTRACT ext1
USERID alice@orcl, PASSWORD pwd
EXTTRAIL ./dirdat/lt
LOGALLSUPCOLS
UPDATERECORDFORMAT COMPACT
TABLE scott.*;
GGSCI> REGISTER EXTRACT ext1 DATABASE CONTAINER(current);
GGSCI> ADD EXTRACT ext1, INTEGRATED TRANLOG, BEGIN NOW;

5. Pump

5.1 参数

# pump1.prm
EXTRACT pump1
USERID alice@orcl, PASSWORD pwd
RMTHOST target, MGRPORT 7809
RMTTRAIL ./dirdat/rt
PASSTHRU
TABLE scott.*;

5.2 创建

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

6. Replicat

6.1 参数

# rep1.prm
REPLICAT rep1
USERID bob@orcl, PASSWORD pwd
ASSUMETARGETDEFS
MAP scott.*, TARGET scott.*;

6.2 创建

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

6.3 集成模式(12c+)

GGSCI> DBLOGIN USERID bob@orcl, PASSWORD pwd
GGSCI> REGISTER REPLICAT rep1 DATABASE
GGSCI> ADD REPLICAT rep1, INTEGRATED, EXTTRAIL ./dirdat/rt

7. 数据初始化

7.1 源导出

expdp system/pwd DIRECTORY=dpump_dir DUMPFILE=init.dmp 
  SCHEMAS=scott FLASHBACK_TIME=SYSTIMESTAMP

7.2 SCN

SELECT current_scn FROM v$database;

7.3 目标导入

impdp system/pwd DIRECTORY=dpump_dir DUMPFILE=init.dmp 
  SCHEMAS=scott TABLE_EXISTS_ACTION=REPLACE

7.4 启动复制

# Extract 从 SCN 开始
GGSCI> ALTER EXTRACT ext1, BEGIN 2026-07-21 15:00:00

# Replicat 从 SCN
GGSCI> START REPLICAT rep1, AFTERCSN 1234567

8. Checkpoint

8.1 检查点表

CREATE TABLE ggadmin.checkpoint_tbl (...);
# GLOBALS
CHECKPOINTTABLE ggadmin.checkpoint_tbl

8.2 管理

GGSCI> INFO REPLICAT rep1 SHOWCH
GGSCI> SEND REPLICAT rep1, STATUS

9. 数据转换

9.1 MAP 转换

MAP scott.employees, TARGET hr.employees,
  COLMAP (
    USEDTYPES,
    emp_id = id,
    emp_name = name,
    emp_salary = salary * 1.1
  );

9.2 过滤

MAP scott.employees, TARGET hr.employees,
  WHERE (salary > 5000);

9.3 过程

# 过程逻辑
MACRO #my_logic
  TARGET hr.employees
  COLMAP (...)
END;

MAP scott.employees, TARGET hr.employees,
  #my_macro;

10. 异构

10.1 源 Oracle → 目标 MySQL

# Replicat
REPLICAT rep_mysql
TARGETDB MYSQLDB
SOURCEDB target_mysql, USERID root, PASSWORD pwd
MAP scott.employees, TARGET mysql.employees;

10.2 源 MySQL → 目标 Oracle

# Extract
EXTRACT ext_mysql
SOURCEDB source_mysql, USERID root, PASSWORD pwd
EXTTRAIL ./dirdat/lt
TABLE mysql.employees;

11. 双向

11.1 配置

- 双向 Extract + Replicat
- 防止循环

11.2 参数

# 双向
REPLICAT rep1
USERID bob@orcl, PASSWORD pwd
ASSUMETARGETDEFS
MAP scott.*, TARGET scott.*;
-- 防止循环
DDL INCLUDE ALL

12. DDL 复制

12.1 启用

# Extract
DDL INCLUDE ALL
DDLINCLUDE MAPPED
DDLOPTIONS ADDTRANDATA

12.2 限制

- 部分 DDL 不支持
- 对象类型限制

13. 监控

13.1 GGSCI

GGSCI> INFO ALL
GGSCI> INFO EXTRACT ext1
GGSCI> INFO REPLICAT rep1
GGSCI> STATS ext1
GGSCI> STATS rep1
GGSCI> LAG EXTRACT ext1

13.2 视图

SELECT * FROM dba_goldengate_capture;
SELECT * FROM dba_goldengate_replication;

13.3 Lag

- Extract lag
- Replicat lag
- 阈值告警

14. 性能优化

14.1 并行

# Replicat 并行
REPLICAT rep1
USERID bob@orcl, PASSWORD pwd
ASSUMETARGETDEFS
MAP scott.*, TARGET scott.*;

# 分组
GGSCI> ADD REPLICAT rep1_1, EXTTRAIL ./dirdat/rt
GGSCI> ADD REPLICAT rep1_2, EXTTRAIL ./dirdat/rt

14.2 批量

BATCHSQL
BATCHTRANSOPS 10000

14.3 压缩

RMTHOSTOPTIONS COMPRESS

15. 常见坑与排错

15.1 Lag 高

- 网络
- 目标性能
- 并行

15.2 OGG-00664

- 补充日志缺失
- ADD TRANDATA

15.3 OGG-01172

- 数据冲突
- RESOLVECONFLICT
- 或跳过

16. 最佳实践

  1. 集成模式:12c+ 推荐
  2. 补充日志:必要
  3. Checkpoint:可靠
  4. 并行:性能
  5. 监控 Lag:及时
  6. 双向谨慎:循环
  7. DDL 限制:理解
  8. 初始化一致:SCN
  9. 测试切换:可行
  10. 文档化:架构

17. 参考资料

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