本文详细介绍Oracle GoldenGate的基础概念、功能和应用场景,以及在生产环境中的规划、实施和管理。风哥教程参考Oracle官方文档GoldenGate等内容。学习交流加群风哥微信: itpux-com
Part01-基础概念与理论知识
1.1 GoldenGate概念
Oracle GoldenGate是一个企业级的数据复制和集成解决方案,能够在异构环境之间实现实时的数据复制和转换。它通过捕获源数据库的事务变化,将这些变化传输到目标数据库,并应用这些变化,从而保持源数据库和目标数据库的同步。
1.2 GoldenGate功能
Oracle GoldenGate具有以下主要功能:
- 实时数据复制:捕获源数据库的事务变化,并实时传输到目标数据库
- 异构环境支持:支持不同数据库之间的数据复制,如Oracle到MySQL、SQL Server等
- 数据转换:在数据复制过程中进行数据转换和过滤
- 高可用性:支持故障转移和恢复,确保数据复制的连续性
- 性能优化:采用高效的数据捕获和传输机制,减少对源数据库的影响
- 灵活的配置:支持单向复制、双向复制、级联复制等多种配置方式
1.3 GoldenGate应用场景
Oracle 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 (node1) 1> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
Part02-生产环境规划与建议
2.1 GoldenGate需求分析
在部署GoldenGate前,需要进行需求分析:
- 确定复制方向:单向复制、双向复制还是级联复制
- 确定复制范围:全库复制还是部分表复制
- 确定性能要求:复制延迟要求、吞吐量要求等
- 确定数据转换需求:是否需要在复制过程中进行数据转换
- 确定高可用性要求:是否需要配置故障转移和恢复机制
2.2 GoldenGate规划建议
以下是GoldenGate规划的建议:
- 硬件规划:根据数据量和性能要求,选择合适的服务器硬件配置
- 软件规划:确保源数据库和目标数据库的版本支持GoldenGate
- 网络规划:确保源数据库和目标数据库之间有足够的带宽和低延迟
- 存储规划:为GoldenGate的 trail 文件和日志文件分配足够的存储空间
- 安全规划:配置适当的访问控制和加密机制,确保数据的安全性
2.3 架构选择策略
GoldenGate支持多种架构:
- 单向复制架构:从源数据库复制到目标数据库,用于灾难恢复和负载均衡
- 双向复制架构:源数据库和目标数据库之间相互复制,用于高可用性和负载均衡
- 级联复制架构:通过中间节点进行复制,用于跨地域的数据复制
- 集中式复制架构:将多个源数据库的数据复制到一个目标数据库,用于数据仓库加载
Part03-生产环境项目实施方案
3.1 源数据库准备
源数据库的准备工作包括:
- 启用归档模式
- 启用附加日志
- 创建GoldenGate用户
- 配置网络连接
$ sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP MOUNT;ORACLE instance started.
Total System Global Area 8589934592 bytes
Fixed Size 9135808 bytes
Variable Size 4294967296 bytes
Database Buffers 4278190080 bytes
Redo Buffers 7639040 bytes
Database mounted.
SQL> ALTER DATABASE ARCHIVELOG;Database altered.
SQL> ALTER DATABASE OPEN;Database opened.
# 2. 启用附加日志
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;Database altered.
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;Database altered.
# 3. 创建GoldenGate用户
SQL> CREATE TABLESPACE ggs_data DATAFILE ‘/oradata/fgedudb/ggs_data01.dbf’ SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;Tablespace created.
SQL> CREATE USER ggsadmin IDENTIFIED BY Ggsadmin_123 DEFAULT TABLESPACE ggs_data TEMPORARY TABLESPACE temp;User created.
SQL> GRANT CONNECT, RESOURCE, DBA TO ggsadmin;Grant succeeded.
# 4. 配置网络连接
# 确保源数据库和目标数据库之间可以通过网络通信
$ ping target-db
PING target-db (192.168.1.30) 56(84) bytes of data.
64 bytes from target-db (192.168.1.30): icmp_seq=1 ttl=64 time=0.500 ms
64 bytes from target-db (192.168.1.30): icmp_seq=2 ttl=64 time=0.450 ms
3.2 目标数据库准备
目标数据库的准备工作包括:
- 创建GoldenGate用户
- 配置网络连接
- 准备表结构
- 配置数据库参数
$ sqlplus / as sysdba
SQL> CREATE TABLESPACE ggs_data DATAFILE ‘/oradata/targetdb/ggs_data01.dbf’ SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;Tablespace created.
SQL> CREATE USER ggsadmin IDENTIFIED BY Ggsadmin_123 DEFAULT TABLESPACE ggs_data TEMPORARY TABLESPACE temp;User created.
SQL> GRANT CONNECT, RESOURCE, DBA TO ggsadmin;Grant succeeded.
# 2. 配置网络连接
# 确保目标数据库和源数据库之间可以通过网络通信
$ ping source-db
PING source-db (192.168.1.20) 56(84) bytes of data.
64 bytes from source-db (192.168.1.20): icmp_seq=1 ttl=64 time=0.480 ms
64 bytes from source-db (192.168.1.20): icmp_seq=2 ttl=64 time=0.420 ms
# 3. 准备表结构
# 如果需要,可以从源数据库导出表结构并导入到目标数据库
$ expdp ggsadmin/Ggsadmin_123@source-db schemas=fgedu directory=data_pump_dir dumpfile=fgedu_schema.dmp logfile=expdp_schema.log
$ impdp ggsadmin/Ggsadmin_123@target-db schemas=fgedu directory=data_pump_dir dumpfile=fgedu_schema.dmp logfile=impdp_schema.log
# 4. 配置数据库参数
SQL> ALTER SYSTEM SET global_names=false SCOPE=SPFILE;System altered.
SQL> ALTER SYSTEM SET utl_file_dir=’/u01/app/goldengate/dirrpt’ SCOPE=SPFILE;System altered.
SQL> SHUTDOWN IMMEDIATE;Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP;ORACLE instance started.
Total System Global Area 8589934592 bytes
Fixed Size 9135808 bytes
Variable Size 4294967296 bytes
Database Buffers 4278190080 bytes
Redo Buffers 7639040 bytes
Database mounted.
Database opened.
3.3 GoldenGate配置
GoldenGate的配置包括:
- 安装GoldenGate软件
- 配置Manager进程
- 配置Extract进程
- 配置Data Pump进程(可选)
- 配置Replicat进程
# 在源数据库和目标数据库服务器上安装GoldenGate软件
# 略
# 2. 配置Manager进程
# 在源数据库服务器上执行
$ cd /u01/app/goldengate
$ ./ggsci
GGSCI (source-db) 1> CREATE SUBDIRS
Creating subdirectories under current directory /u01/app/goldengate
Parameter files /u01/app/goldengate/dirprm:
Report files /u01/app/goldengate/dirrpt:
Checkpoint files /u01/app/goldengate/dirchk:
Process status files /u01/app/goldengate/dirpcs:
SQL script files /u01/app/goldengate/dirsql:
Database definitions files /u01/app/goldengate/dirdef:
Extract data files /u01/app/goldengate/dirdat:
Temporary files /u01/app/goldengate/dirtmp:
Credential store files /u01/app/goldengate/dircrd:
Masterkey wallet files /u01/app/goldengate/dirwlt:
Dump files /u01/app/goldengate/dirdmp:
GGSCI (source-db) 2> 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) 3> START MGR
Manager started.
# 在目标数据库服务器上执行相同的Manager配置
# 略
# 3. 配置Extract进程
# 在源数据库服务器上执行
GGSCI (source-db) 4> EDIT PARAMS EXT1
EXTRACT EXT1
USERID ggsadmin, PASSWORD Ggsadmin_123
EXTTRAIL /u01/app/goldengate/dirdat/et
TABLE fgedu.*;GGSCI (source-db) 5> ADD EXTRACT EXT1, TRANLOG, BEGIN NOW
EXTRACT added.
GGSCI (source-db) 6> ADD EXTTRAIL /u01/app/goldengate/dirdat/et, EXTRACT EXT1, MEGABYTES 100
EXTTRAIL added.
# 4. 配置Data Pump进程
GGSCI (source-db) 7> EDIT PARAMS DP1
EXTRACT DP1
USERID ggsadmin, PASSWORD Ggsadmin_123
RMTHOST target-db, MGRPORT 7809
RMTTRAIL /u01/app/goldengate/dirdat/rt
TABLE fgedu.*;GGSCI (source-db) 8> ADD EXTRACT DP1, EXTTRAILSOURCE /u01/app/goldengate/dirdat/et
EXTRACT added.
GGSCI (source-db) 9> ADD RMTTRAIL /u01/app/goldengate/dirdat/rt, EXTRACT DP1, MEGABYTES 100
RMTTRAIL added.
# 5. 配置Replicat进程
# 在目标数据库服务器上执行
GGSCI (target-db) 1> EDIT PARAMS REP1
REPLICAT REP1
USERID ggsadmin, PASSWORD Ggsadmin_123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;GGSCI (target-db) 2> ADD REPLICAT REP1, EXTTRAIL /u01/app/goldengate/dirdat/rt, NODBCHECKPOINT
REPLICAT added.
Part04-生产案例与实战讲解
4.1 Oracle到Oracle复制案例
以下是Oracle到Oracle的GoldenGate复制案例:
# 源数据库:source-db,IP:192.168.1.20
# 目标数据库:target-db,IP:192.168.1.30
# GoldenGate版本:21.3.0.0.0
# 1. 源数据库准备(已完成)
# 2. 目标数据库准备(已完成)
# 3. GoldenGate配置(已完成)
# 4. 启动GoldenGate进程
# 在源数据库服务器上启动Extract和Data Pump进程
GGSCI (source-db) 1> START EXT1
Sending START request to MANAGER …
EXTRACT EXT1 starting
GGSCI (source-db) 2> START DP1
Sending START request to MANAGER …
EXTRACT DP1 starting
# 在目标数据库服务器上启动Replicat进程
GGSCI (target-db) 1> START REP1
Sending START request to MANAGER …
REPLICAT REP1 starting
# 5. 验证GoldenGate进程状态
# 在源数据库服务器上执行
GGSCI (source-db) 3> 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) 2> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:03
# 6. 测试数据复制
# 在源数据库上创建表并插入数据
$ sqlplus ggsadmin/Ggsadmin_123@source-db
SQL> CREATE TABLE fgedu.test_goldengate (id NUMBER, name VARCHAR2(50), created_date DATE);Table created.
SQL> INSERT INTO fgedu.test_goldengate VALUES (1, ‘GoldenGate Test’, SYSDATE);1 row created.
SQL> COMMIT;Commit complete.
# 在目标数据库上验证数据是否同步
$ sqlplus ggsadmin/Ggsadmin_123@target-db
SQL> SELECT * FROM fgedu.test_goldengate;ID NAME CREATED_DATE
———- ——————– ——————-
1 GoldenGate Test 2026-04-03 10:00:00
4.2 初始数据加载案例
以下是使用GoldenGate进行初始数据加载的案例:
# 源数据库:source-db,IP:192.168.1.20
# 目标数据库:target-db,IP:192.168.1.30
# 1. 配置初始加载Extract进程
# 在源数据库服务器上执行
GGSCI (source-db) 1> EDIT PARAMS EINI
EXTRACT EINI
USERID ggsadmin, PASSWORD Ggsadmin_123
RMTHOST target-db, MGRPORT 7809
RMTTASK replicat, GROUP RINI
TABLE fgedu.*;# 2. 配置初始加载Replicat进程
# 在目标数据库服务器上执行
GGSCI (target-db) 1> EDIT PARAMS RINI
REPLICAT RINI
USERID ggsadmin, PASSWORD Ggsadmin_123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;# 3. 启动初始加载进程
# 在源数据库服务器上执行
GGSCI (source-db) 2> START EINI
Sending START request to MANAGER …
EXTRACT EINI starting
# 4. 监控初始加载进度
# 在目标数据库服务器上执行
GGSCI (target-db) 2> VIEW REPORT RINI
# 5. 验证初始加载结果
# 在目标数据库上执行
$ sqlplus ggsadmin/Ggsadmin_123@target-db
SQL> SELECT COUNT(*) FROM fgedu.customers;COUNT(*)
———-
1000
SQL> SELECT COUNT(*) FROM fgedu.orders;COUNT(*)
———-
5000
4.3 监控与管理案例
以下是GoldenGate监控与管理的案例:
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
# 2. 查看进程详细信息
GGSCI (source-db) 2> INFO EXT1, DETAIL
EXTRACT EXT1 Last Started 2026-04-03 09:30 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:05 ago)
Process ID 12345
Log Read Checkpoint Oracle Redo Logs
2026-04-03 10:15:30 Seqno 52, RBA 12345678
SCN 0.12345678 (12345678)
# 3. 查看trail文件信息
GGSCI (source-db) 3> 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
# 4. 查看报告文件
GGSCI (source-db) 4> VIEW REPORT EXT1
# 5. 停止和启动进程
GGSCI (source-db) 5> STOP EXT1
Sending STOP request to MANAGER …
EXTRACT EXT1 stopping
GGSCI (source-db) 6> START EXT1
Sending START request to MANAGER …
EXTRACT EXT1 starting
# 6. 查看GoldenGate事件日志
GGSCI (source-db) 7> VIEW GGSEVT
Part05-风哥经验总结与分享
1. GoldenGate是一个强大的数据复制和集成解决方案,能够在异构环境之间实现实时的数据复制和转换。更多视频教程www.fgedu.net.cn
2. 在部署GoldenGate前,需要进行充分的需求分析和规划,确保GoldenGate能够满足业务需求。
3. 源数据库和目标数据库的准备工作是GoldenGate部署成功的基础,必须认真完成。
4. GoldenGate的配置包括Manager、Extract、Data Pump和Replicat进程的配置,需要根据业务需求进行合理配置。
5. 初始数据加载是GoldenGate部署的重要环节,需要确保初始数据的一致性。学习交流加群风哥QQ113257174
6. 定期监控GoldenGate进程的状态和性能,及时发现和解决问题,确保数据复制的连续性和可靠性。
7. 制定详细的备份和恢复计划,确保在GoldenGate出现问题时能够快速恢复。
8. 建议寻求专业的服务支持,特别是对于复杂的GoldenGate部署项目,确保部署的顺利进行。
更多学习教程公众号风哥教程itpux_com。from oracle:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
