1. 首页 > Oracle教程 > 正文

Oracle教程FG242-GoldenGate架构

本文详细介绍Oracle GoldenGate的架构组成、核心组件和数据流,以及在生产环境中的架构设计和实施。风哥教程参考Oracle官方文档GoldenGate等内容。学习交流加群风哥微信: itpux-com

Part01-基础概念与理论知识

1.1 GoldenGate架构概述

Oracle GoldenGate采用模块化的架构设计,主要包括源端组件和目标端组件两部分。源端组件负责捕获数据变化,目标端组件负责应用数据变化。GoldenGate架构支持异构环境,可以在不同数据库、操作系统和硬件平台之间实现数据复制。

1.2 GoldenGate核心组件

Oracle GoldenGate的核心组件包括:

  • Manager进程:GoldenGate的控制和管理进程,负责启动、停止和监控其他GoldenGate进程
  • Extract进程:源端组件,负责从源数据库捕获数据变化
  • Data Pump进程:源端可选组件,负责将Extract捕获的数据变化传输到目标端
  • Replicat进程:目标端组件,负责将源端传输的数据变化应用到目标数据库
  • Trail文件:用于存储Extract捕获的数据变化,作为数据传输的中间介质
  • Checkpoint文件:用于记录进程的位置信息,实现故障恢复
  • Parameter文件:用于配置GoldenGate进程的参数

1.3 GoldenGate数据流

Oracle GoldenGate的数据流包括以下步骤:

  1. Extract进程从源数据库的事务日志中捕获数据变化
  2. Extract进程将捕获的数据变化写入本地Trail文件
  3. Data Pump进程从本地Trail文件中读取数据变化,并传输到目标端
  4. 目标端的Trail文件接收源端传输的数据变化
  5. Replicat进程从目标端的Trail文件中读取数据变化,并应用到目标数据库
# 查看GoldenGate组件状态
$ cd /u01/app/goldengate
$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 21.3.0.0.0 OGGCORE_21.3.0.0.0_PLATFORMS_210715.1004_FBO
Linux, x64, 64bit (optimized), Oracle 19c on Jul 17 2021 05:46:21

Copyright (C) 1995, 2021, Oracle and/or its affiliates. All rights reserved.

GGSCI (source-db) 1> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING DP1 00:00:00 00:00:05
EXTRACT RUNNING EXT1 00:00:00 00:00:05

GGSCI (target-db) 1> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:03

# 查看Trail文件信息
GGSCI (source-db) 2> INFO EXTTRAIL /u01/app/goldengate/dirdat/et

Extract Trail: /u01/app/goldengate/dirdat/et
Extract: EXT1
Seqno: 000005
RBA: 123456
File Size: 100 MB

trail file /u01/app/goldengate/dirdat/et000005, with header version 2, record version 4

Part02-生产环境规划与建议

2.1 架构设计原则

GoldenGate架构设计应遵循以下原则:

  • 高可用性:确保GoldenGate进程和数据复制的连续性
  • 性能优化:优化数据流,减少复制延迟
  • 可扩展性:支持业务增长和数据量增加
  • 安全性:确保数据传输和存储的安全性
  • 可维护性:便于监控、管理和维护

2.2 架构选择因素

选择GoldenGate架构时,需要考虑以下因素:

  • 业务需求:如灾难恢复、数据仓库加载、应用迁移等
  • 数据量:源数据库的数据量和变化频率
  • 性能要求:允许的复制延迟和吞吐量要求
  • 网络环境:源数据库和目标数据库之间的网络带宽和延迟
  • 数据库环境:源数据库和目标数据库的类型、版本和配置

2.3 架构规划考虑因素

架构规划时需要考虑以下因素:

  • 硬件配置:GoldenGate服务器的CPU、内存和存储配置
  • 软件版本:GoldenGate和数据库的版本兼容性
  • 网络配置:源数据库和目标数据库之间的网络连接和带宽
  • 存储配置:Trail文件和日志文件的存储空间
  • 安全配置:访问控制、数据加密和认证机制
生产环境建议:根据业务需求和技术环境选择合适的GoldenGate架构。对于关键业务系统,建议配置高可用性架构,如双活架构或级联架构,确保数据复制的连续性和可靠性。

Part03-生产环境项目实施方案

3.1 单向复制架构实施

单向复制架构是最简单的GoldenGate架构,从源数据库复制到目标数据库。适用于灾难恢复、数据仓库加载和负载均衡等场景。

# 单向复制架构实施步骤

# 1. 源数据库准备
# 启用归档模式
# 启用附加日志
# 创建GoldenGate用户
# 配置网络连接

# 2. 目标数据库准备
# 创建GoldenGate用户
# 配置网络连接
# 准备表结构
# 配置数据库参数

# 3. GoldenGate配置
# 源端配置Manager进程
GGSCI (source-db) 1> EDIT PARAMS MGR

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 源端配置Extract进程
GGSCI (source-db) 2> EDIT PARAMS EXT1

EXTRACT EXT1
USERID ggsadmin, PASSWORD Ggsadmin_123
EXTTRAIL /u01/app/goldengate/dirdat/et
TABLE fgedu.*;# 源端配置Data Pump进程
GGSCI (source-db) 3> EDIT PARAMS DP1

EXTRACT DP1
USERID ggsadmin, PASSWORD Ggsadmin_123
RMTHOST target-db, MGRPORT 7809
RMTTRAIL /u01/app/goldengate/dirdat/rt
TABLE fgedu.*;# 目标端配置Manager进程
GGSCI (target-db) 1> EDIT PARAMS MGR

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

# 目标端配置Replicat进程
GGSCI (target-db) 2> EDIT PARAMS REP1

REPLICAT REP1
USERID ggsadmin, PASSWORD Ggsadmin_123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;# 4. 启动GoldenGate进程
# 源端启动Manager、Extract和Data Pump进程
GGSCI (source-db) 4> START MGR
GGSCI (source-db) 5> START EXT1
GGSCI (source-db) 6> START DP1

# 目标端启动Manager和Replicat进程
GGSCI (target-db) 3> START MGR
GGSCI (target-db) 4> START REP1

3.2 双向复制架构实施

双向复制架构允许源数据库和目标数据库之间相互复制数据。适用于高可用性、负载均衡和业务连续性等场景。

# 双向复制架构实施步骤

# 1. 源数据库和目标数据库准备(同单向复制)

# 2. GoldenGate配置
# 源端配置Manager、Extract和Data Pump进程(同单向复制)

# 目标端配置Manager、Extract和Data Pump进程
GGSCI (target-db) 1> EDIT PARAMS EXT2

EXTRACT EXT2
USERID ggsadmin, PASSWORD Ggsadmin_123
EXTTRAIL /u01/app/goldengate/dirdat/et
TABLE fgedu.*;GGSCI (target-db) 2> EDIT PARAMS DP2

EXTRACT DP2
USERID ggsadmin, PASSWORD Ggsadmin_123
RMTHOST source-db, MGRPORT 7809
RMTTRAIL /u01/app/goldengate/dirdat/rt
TABLE fgedu.*;# 源端配置Replicat进程
GGSCI (source-db) 1> EDIT PARAMS REP2

REPLICAT REP2
USERID ggsadmin, PASSWORD Ggsadmin_123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;# 3. 处理冲突
# 配置数据库触发器或应用程序逻辑处理数据冲突
# 例如,使用时间戳或序列号来解决冲突

# 4. 启动GoldenGate进程
# 源端启动所有进程
GGSCI (source-db) 2> START MGR
GGSCI (source-db) 3> START EXT1
GGSCI (source-db) 4> START DP1
GGSCI (source-db) 5> START REP2

# 目标端启动所有进程
GGSCI (target-db) 3> START MGR
GGSCI (target-db) 4> START EXT2
GGSCI (target-db) 5> START DP2
GGSCI (target-db) 6> START REP1

3.3 级联复制架构实施

级联复制架构通过中间节点进行数据复制。适用于跨地域的数据复制和大规模数据复制场景。

# 级联复制架构实施步骤

# 环境信息
# 源数据库:source-db,IP:192.168.1.20
# 中间节点:mid-db,IP:192.168.1.30
# 目标数据库:target-db,IP:192.168.1.40

# 1. 源数据库、中间节点和目标数据库准备(同单向复制)

# 2. GoldenGate配置
# 源端配置Manager、Extract和Data Pump进程
GGSCI (source-db) 1> EDIT PARAMS MGR

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

GGSCI (source-db) 2> EDIT PARAMS EXT1

EXTRACT EXT1
USERID ggsadmin, PASSWORD Ggsadmin_123
EXTTRAIL /u01/app/goldengate/dirdat/et
TABLE fgedu.*;GGSCI (source-db) 3> EDIT PARAMS DP1

EXTRACT DP1
USERID ggsadmin, PASSWORD Ggsadmin_123
RMTHOST mid-db, MGRPORT 7809
RMTTRAIL /u01/app/goldengate/dirdat/rt
TABLE fgedu.*;# 中间节点配置Manager、Extract和Data Pump进程
GGSCI (mid-db) 1> EDIT PARAMS MGR

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

GGSCI (mid-db) 2> EDIT PARAMS EXT2

EXTRACT EXT2
USERID ggsadmin, PASSWORD Ggsadmin_123
EXTTRAIL /u01/app/goldengate/dirdat/et
TABLE fgedu.*;GGSCI (mid-db) 3> EDIT PARAMS DP2

EXTRACT DP2
USERID ggsadmin, PASSWORD Ggsadmin_123
RMTHOST target-db, MGRPORT 7809
RMTTRAIL /u01/app/goldengate/dirdat/rt
TABLE fgedu.*;# 目标端配置Manager和Replicat进程
GGSCI (target-db) 1> EDIT PARAMS MGR

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/goldengate/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7

GGSCI (target-db) 2> EDIT PARAMS REP1

REPLICAT REP1
USERID ggsadmin, PASSWORD Ggsadmin_123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;# 3. 启动GoldenGate进程
# 源端启动所有进程
GGSCI (source-db) 4> START MGR
GGSCI (source-db) 5> START EXT1
GGSCI (source-db) 6> START DP1

# 中间节点启动所有进程
GGSCI (mid-db) 4> START MGR
GGSCI (mid-db) 5> START EXT2
GGSCI (mid-db) 6> START DP2

# 目标端启动所有进程
GGSCI (target-db) 3> START MGR
GGSCI (target-db) 4> START REP1

Part04-生产案例与实战讲解

4.1 单向复制架构案例

以下是单向复制架构的实战案例:

# 环境信息
# 源数据库:source-db,IP:192.168.1.20
# 目标数据库:target-db,IP:192.168.1.30
# GoldenGate版本:21.3.0.0.0

# 1. 源数据库准备
# 启用归档模式
# 启用附加日志
# 创建GoldenGate用户

# 2. 目标数据库准备
# 创建GoldenGate用户
# 准备表结构
# 配置数据库参数

# 3. GoldenGate配置
# 源端配置Manager、Extract和Data Pump进程
# 目标端配置Manager和Replicat进程

# 4. 启动GoldenGate进程
# 源端启动进程
GGSCI (source-db) 1> START MGR
GGSCI (source-db) 2> START EXT1
GGSCI (source-db) 3> START DP1

# 目标端启动进程
GGSCI (target-db) 1> START MGR
GGSCI (target-db) 2> START REP1

# 5. 验证单向复制
# 在源数据库上创建表并插入数据
$ sqlplus ggsadmin/Ggsadmin_123@source-db

SQL> CREATE TABLE fgedu.test_one_way (id NUMBER, name VARCHAR2(50));Table created.

SQL> INSERT INTO fgedu.test_one_way VALUES (1, ‘One Way Replication’);1 row created.

SQL> COMMIT;Commit complete.

# 在目标数据库上验证数据是否同步
$ sqlplus ggsadmin/Ggsadmin_123@target-db

SQL> SELECT * FROM fgedu.test_one_way;ID NAME
———- ——————–
1 One Way Replication

# 6. 监控复制状态
# 查看进程状态
GGSCI (source-db) 4> INFO ALL
GGSCI (target-db) 3> INFO ALL

# 查看复制延迟
GGSCI (target-db) 4> INFO REP1, DETAIL

4.2 双向复制架构案例

以下是双向复制架构的实战案例:

# 环境信息
# 数据库A:db-a,IP:192.168.1.20
# 数据库B:db-b,IP:192.168.1.30
# GoldenGate版本:21.3.0.0.0

# 1. 数据库A和数据库B准备
# 启用归档模式
# 启用附加日志
# 创建GoldenGate用户

# 2. 配置双向复制
# 数据库A配置Extract和Data Pump进程复制到数据库B
# 数据库B配置Extract和Data Pump进程复制到数据库A
# 数据库A配置Replicat进程接收数据库B的复制
# 数据库B配置Replicat进程接收数据库A的复制

# 3. 处理冲突
# 创建时间戳列用于冲突解决
$ sqlplus ggsadmin/Ggsadmin_123@db-a

SQL> ALTER TABLE fgedu.test_two_way ADD last_updated DATE DEFAULT SYSDATE;Table altered.

$ sqlplus ggsadmin/Ggsadmin_123@db-b

SQL> ALTER TABLE fgedu.test_two_way ADD last_updated DATE DEFAULT SYSDATE;Table altered.

# 4. 启动GoldenGate进程
# 数据库A启动所有进程
GGSCI (db-a) 1> START MGR
GGSCI (db-a) 2> START EXT1
GGSCI (db-a) 3> START DP1
GGSCI (db-a) 4> START REP2

# 数据库B启动所有进程
GGSCI (db-b) 1> START MGR
GGSCI (db-b) 2> START EXT2
GGSCI (db-b) 3> START DP2
GGSCI (db-b) 4> START REP1

# 5. 验证双向复制
# 在数据库A上插入数据
$ sqlplus ggsadmin/Ggsadmin_123@db-a

SQL> INSERT INTO fgedu.test_two_way (id, name, last_updated) VALUES (1, ‘From DB-A’, SYSDATE);1 row created.

SQL> COMMIT;Commit complete.

# 在数据库B上验证数据
$ sqlplus ggsadmin/Ggsadmin_123@db-b

SQL> SELECT * FROM fgedu.test_two_way;ID NAME LAST_UPDATED
———- ————- ——————-
1 From DB-A 2026-04-03 14:30:00

# 在数据库B上更新数据
SQL> UPDATE fgedu.test_two_way SET name = ‘Updated from DB-B’, last_updated = SYSDATE WHERE id = 1;1 row updated.

SQL> COMMIT;Commit complete.

# 在数据库A上验证数据
$ sqlplus ggsadmin/Ggsadmin_123@db-a

SQL> SELECT * FROM fgedu.test_two_way;ID NAME LAST_UPDATED
———- —————– ——————-
1 Updated from DB-B 2026-04-03 14:31:00

4.3 级联复制架构案例

以下是级联复制架构的实战案例:

# 环境信息
# 源数据库:source-db,IP:192.168.1.20
# 中间节点:mid-db,IP:192.168.1.30
# 目标数据库:target-db,IP:192.168.1.40
# GoldenGate版本:21.3.0.0.0

# 1. 源数据库、中间节点和目标数据库准备
# 启用归档模式
# 启用附加日志
# 创建GoldenGate用户

# 2. 配置级联复制
# 源数据库配置Extract和Data Pump进程复制到中间节点
# 中间节点配置Extract和Data Pump进程复制到目标数据库
# 目标数据库配置Replicat进程接收中间节点的复制

# 3. 启动GoldenGate进程
# 源数据库启动所有进程
GGSCI (source-db) 1> START MGR
GGSCI (source-db) 2> START EXT1
GGSCI (source-db) 3> START DP1

# 中间节点启动所有进程
GGSCI (mid-db) 1> START MGR
GGSCI (mid-db) 2> START EXT2
GGSCI (mid-db) 3> START DP2

# 目标数据库启动所有进程
GGSCI (target-db) 1> START MGR
GGSCI (target-db) 2> START REP1

# 4. 验证级联复制
# 在源数据库上创建表并插入数据
$ sqlplus ggsadmin/Ggsadmin_123@source-db

SQL> CREATE TABLE fgedu.test_cascaded (id NUMBER, name VARCHAR2(50));Table created.

SQL> INSERT INTO fgedu.test_cascaded VALUES (1, ‘Cascaded Replication’);1 row created.

SQL> COMMIT;Commit complete.

# 在中间节点上验证数据
$ sqlplus ggsadmin/Ggsadmin_123@mid-db

SQL> SELECT * FROM fgedu.test_cascaded;ID NAME
———- ——————–
1 Cascaded Replication

# 在目标数据库上验证数据
$ sqlplus ggsadmin/Ggsadmin_123@target-db

SQL> SELECT * FROM fgedu.test_cascaded;ID NAME
———- ——————–
1 Cascaded Replication

风哥提示:级联复制架构可以减少源数据库的负载,但会增加复制延迟。在设计级联复制架构时,需要平衡复制性能和源数据库负载。

Part05-风哥经验总结与分享

1. GoldenGate架构设计是GoldenGate部署成功的关键,需要根据业务需求和技术环境进行合理设计。更多视频教程www.fgedu.net.cn

2. 单向复制架构是最简单的GoldenGate架构,适用于灾难恢复和数据仓库加载等场景。

3. 双向复制架构允许源数据库和目标数据库之间相互复制数据,适用于高可用性和负载均衡等场景,但需要处理数据冲突。

4. 级联复制架构通过中间节点进行数据复制,适用于跨地域的数据复制和大规模数据复制场景,但会增加复制延迟。

5. GoldenGate架构设计应遵循高可用性、性能优化、可扩展性、安全性和可维护性原则。学习交流加群风哥QQ113257174

6. 在部署GoldenGate架构时,需要考虑硬件配置、软件版本、网络配置、存储配置和安全配置等因素。

7. 定期监控GoldenGate进程的状态和性能,及时发现和解决问题,确保数据复制的连续性和可靠性。

8. 建议寻求专业的服务支持,特别是对于复杂的GoldenGate架构设计和实施,确保部署的顺利进行。

风哥提示:GoldenGate架构设计需要综合考虑业务需求、技术环境和性能要求等因素。在设计过程中,建议进行充分的测试和验证,确保架构能够满足业务需求和性能要求。同时,要制定完善的管理和维护文档,确保GoldenGate配置的持续健康运行。

更多学习教程公众号风哥教程itpux_com。from oracle:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息