Oracle GoldenGate 全集
Oracle GoldenGate 全集
适用版本:Oracle GoldenGate 12c / 19c / 21c 文档版本:v1.0 / 2026-07
1. 概述
GoldenGate 是 Oracle 实时复制工具[1]:
特性:
- 实时
- 异构
- 零停机
- 双向
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. 最佳实践
- 集成模式:12c+ 推荐
- 补充日志:必要
- Checkpoint:可靠
- 并行:性能
- 监控 Lag:及时
- 双向谨慎:循环
- DDL 限制:理解
- 初始化一致:SCN
- 测试切换:可行
- 文档化:架构
17. 参考资料
[1] Oracle GoldenGate Documentation 19c https://docs.oracle.com/en/middleware/goldengate/core/19.1/