本文档详细介绍Oracle GoldenGate的基础概念和核心组件,风哥教程参考Oracle官方文档GoldenGate部分。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 GoldenGate概述
Oracle GoldenGate是一种实时数据复制和集成解决方案,支持跨平台、跨数据库的数据复制。学习交流加群风哥微信: itpux-com
GoldenGate的特点:
- 实时数据复制:几乎零延迟的数据复制
- 跨平台支持:支持不同操作系统和数据库
- 双向复制:支持主主复制和级联复制
- 数据转换:支持数据格式转换和过滤
- 高可用性:支持故障转移和负载均衡
1.2 核心组件
GoldenGate的核心组件:
- Extract:从源数据库提取变更数据
- Data Pump:可选组件,用于将数据从源系统传输到目标系统
- Replicat:将变更数据应用到目标数据库
- Manager:管理GoldenGate进程
- Trail文件:存储变更数据的文件
1.3 工作原理
GoldenGate的工作原理:
- Extract进程从源数据库的重做日志或归档日志中提取变更数据
- Extract进程将提取的数据写入本地Trail文件
- Data Pump进程(可选)将Trail文件传输到目标系统
- Replicat进程从Trail文件中读取数据并应用到目标数据库
- Manager进程监控和管理所有GoldenGate进程
Part02-生产环境规划与建议
2.1 架构规划
GoldenGate架构规划建议:
- 源系统:安装Extract和Data Pump进程
- 目标系统:安装Replicat进程
- 网络:确保源和目标系统之间的网络连接稳定
- 存储:为Trail文件和日志文件分配足够的存储空间
- 安全:配置适当的安全措施,保护数据传输
2.2 硬件要求
硬件要求:
- CPU:至少2个CPU核心
- 内存:至少4GB RAM
- 存储:至少50GB可用空间
- 网络:至少1Gbps带宽
2.3 软件要求
软件要求:
- 操作系统:Oracle Linux 7.9+/RHEL 7.9+/Windows Server 2016+
- Oracle数据库:11gR2或更高版本
- GoldenGate:19c或更高版本
- Java:JRE 8或更高版本(用于管理界面)
Part03-生产环境项目实施方案
GoldenGate实施步骤:
- 安装GoldenGate软件
- 配置源数据库
- 配置目标数据库
- 创建Extract进程
- 创建Data Pump进程(可选)
- 创建Replicat进程
- 启动所有进程
- 监控和验证
Part04-生产案例与实战讲解
4.1 安装GoldenGate软件
# 解压GoldenGate安装包
unzip fbo_ggs_Linux_x64_shiphome.zip
# 运行安装程序
cd fbo_ggs_Linux_x64_shiphome/Disk1
./runInstaller
# 按照安装向导完成安装
# 选择安装类型:企业版
# 选择安装位置:/oracle/gg19
# 完成安装
unzip fbo_ggs_Linux_x64_shiphome.zip
# 运行安装程序
cd fbo_ggs_Linux_x64_shiphome/Disk1
./runInstaller
# 按照安装向导完成安装
# 选择安装类型:企业版
# 选择安装位置:/oracle/gg19
# 完成安装
4.2 配置源数据库
# 配置源数据库
sqlplus / as sysdba
# 启用归档模式
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1=’LOCATION=/archivelog’ SCOPE=spfile;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
# 输出日志
System altered.
Database closed.
Database dismounted.
ORACLE instance shut down.
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 8896784 bytes
Variable Size 536870912 bytes
Database Buffers 1073741824 bytes
Redo Buffers 7864320 bytes
Database mounted.
Database altered.
Database altered.
# 启用补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE FORCE LOGGING;
# 输出日志
Database altered.
Database altered.
# 创建GoldenGate用户
CREATE USER ggsadmin IDENTIFIED BY ggsadmin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, DBA TO ggsadmin;
# 输出日志
User created.
Grant succeeded.
sqlplus / as sysdba
# 启用归档模式
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1=’LOCATION=/archivelog’ SCOPE=spfile;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
# 输出日志
System altered.
Database closed.
Database dismounted.
ORACLE instance shut down.
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 8896784 bytes
Variable Size 536870912 bytes
Database Buffers 1073741824 bytes
Redo Buffers 7864320 bytes
Database mounted.
Database altered.
Database altered.
# 启用补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE FORCE LOGGING;
# 输出日志
Database altered.
Database altered.
# 创建GoldenGate用户
CREATE USER ggsadmin IDENTIFIED BY ggsadmin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, DBA TO ggsadmin;
# 输出日志
User created.
Grant succeeded.
4.3 配置目标数据库
# 配置目标数据库
sqlplus / as sysdba
# 创建GoldenGate用户
CREATE USER ggsadmin IDENTIFIED BY ggsadmin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, DBA TO ggsadmin;
# 输出日志
User created.
Grant succeeded.
# 创建测试表
CREATE TABLE fgedu.emp (
empno NUMBER(4),
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2)
);
# 输出日志
Table created.
sqlplus / as sysdba
# 创建GoldenGate用户
CREATE USER ggsadmin IDENTIFIED BY ggsadmin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, DBA TO ggsadmin;
# 输出日志
User created.
Grant succeeded.
# 创建测试表
CREATE TABLE fgedu.emp (
empno NUMBER(4),
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2)
);
# 输出日志
Table created.
4.4 配置GoldenGate
# 配置GoldenGate
cd /oracle/gg19
./ggsci
# 输出日志
Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.0 OGGCORE_19.1.0.0.0_PLATFORMS_190524.1007
Linux, x64, 64bit (optimized), Oracle 19c on May 24 2019 10:16:11
Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
GGSCI (fgedu.net.cn) 1>
# 创建子目录
CREATE SUBDIRS;
# 输出日志
Creating subdirectories under current directory /oracle/gg19
Parameter file /oracle/gg19/dirprm:
Report file /oracle/gg19/dirrpt:
Checkpoint file /oracle/gg19/dirchk:
Process status files /oracle/gg19/dirpcs:
SQL script files /oracle/gg19/dirsql:
Database definitions files /oracle/gg19/dirdef:
Extract data files /oracle/gg19/dirdat:
Temporary files /oracle/gg19/dirtmp:
Credential store files /oracle/gg19/dircrd:
Masterkey wallet files /oracle/gg19/dirwlt:
Dump files /oracle/gg19/dirdmp:
cd /oracle/gg19
./ggsci
# 输出日志
Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.0 OGGCORE_19.1.0.0.0_PLATFORMS_190524.1007
Linux, x64, 64bit (optimized), Oracle 19c on May 24 2019 10:16:11
Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
GGSCI (fgedu.net.cn) 1>
# 创建子目录
CREATE SUBDIRS;
# 输出日志
Creating subdirectories under current directory /oracle/gg19
Parameter file /oracle/gg19/dirprm:
Report file /oracle/gg19/dirrpt:
Checkpoint file /oracle/gg19/dirchk:
Process status files /oracle/gg19/dirpcs:
SQL script files /oracle/gg19/dirsql:
Database definitions files /oracle/gg19/dirdef:
Extract data files /oracle/gg19/dirdat:
Temporary files /oracle/gg19/dirtmp:
Credential store files /oracle/gg19/dircrd:
Masterkey wallet files /oracle/gg19/dirwlt:
Dump files /oracle/gg19/dirdmp:
4.5 创建Extract进程
# 创建Extract进程参数文件
EDIT PARAMS EXT1
# 添加以下内容
EXTRACT EXT1
USERID ggsadmin, PASSWORD ggsadmin
EXTTRAIL /oracle/gg19/dirdat/et
TABLE fgedu.emp;
# 保存并退出
# 添加Extract进程
ADD EXTRACT EXT1, TRANLOG, BEGIN NOW
# 输出日志
EXTRACT added.
# 添加Trail文件
ADD EXTTRAIL /oracle/gg19/dirdat/et, EXTRACT EXT1, MEGABYTES 100
# 输出日志
EXTTRAIL added.
EDIT PARAMS EXT1
# 添加以下内容
EXTRACT EXT1
USERID ggsadmin, PASSWORD ggsadmin
EXTTRAIL /oracle/gg19/dirdat/et
TABLE fgedu.emp;
# 保存并退出
# 添加Extract进程
ADD EXTRACT EXT1, TRANLOG, BEGIN NOW
# 输出日志
EXTRACT added.
# 添加Trail文件
ADD EXTTRAIL /oracle/gg19/dirdat/et, EXTRACT EXT1, MEGABYTES 100
# 输出日志
EXTTRAIL added.
4.6 创建Data Pump进程
# 创建Data Pump进程参数文件
EDIT PARAMS DP1
# 添加以下内容
EXTRACT DP1
USERID ggsadmin, PASSWORD ggsadmin
RMTHOST 192.168.1.2, MGRPORT 7809
RMTTRAIL /oracle/gg19/dirdat/rt
TABLE fgedu.emp;
# 保存并退出
# 添加Data Pump进程
ADD EXTRACT DP1, EXTTRAILSOURCE /oracle/gg19/dirdat/et
# 输出日志
EXTRACT added.
# 添加远程Trail文件
ADD RMTTRAIL /oracle/gg19/dirdat/rt, EXTRACT DP1, MEGABYTES 100
# 输出日志
RMTTRAIL added.
EDIT PARAMS DP1
# 添加以下内容
EXTRACT DP1
USERID ggsadmin, PASSWORD ggsadmin
RMTHOST 192.168.1.2, MGRPORT 7809
RMTTRAIL /oracle/gg19/dirdat/rt
TABLE fgedu.emp;
# 保存并退出
# 添加Data Pump进程
ADD EXTRACT DP1, EXTTRAILSOURCE /oracle/gg19/dirdat/et
# 输出日志
EXTRACT added.
# 添加远程Trail文件
ADD RMTTRAIL /oracle/gg19/dirdat/rt, EXTRACT DP1, MEGABYTES 100
# 输出日志
RMTTRAIL added.
4.7 创建Replicat进程
# 在目标系统上创建Replicat进程参数文件
./ggsci
EDIT PARAMS REP1
# 添加以下内容
REPLICAT REP1
USERID ggsadmin, PASSWORD ggsadmin
ASSUMETARGETDEFS
MAP fgedu.emp, TARGET fgedu.emp;
# 保存并退出
# 添加Replicat进程
ADD REPLICAT REP1, EXTTRAIL /oracle/gg19/dirdat/rt, BEGIN NOW
# 输出日志
REPLICAT added.
./ggsci
EDIT PARAMS REP1
# 添加以下内容
REPLICAT REP1
USERID ggsadmin, PASSWORD ggsadmin
ASSUMETARGETDEFS
MAP fgedu.emp, TARGET fgedu.emp;
# 保存并退出
# 添加Replicat进程
ADD REPLICAT REP1, EXTTRAIL /oracle/gg19/dirdat/rt, BEGIN NOW
# 输出日志
REPLICAT added.
4.8 启动所有进程
# 在源系统上启动Manager进程
./ggsci
START MANAGER
# 输出日志
Manager started.
# 启动Extract进程
START EXT1
# 输出日志
Sending START request to MANAGER …
EXTRACT EXT1 starting
# 启动Data Pump进程
START DP1
# 输出日志
Sending START request to MANAGER …
EXTRACT DP1 starting
# 在目标系统上启动Manager进程
./ggsci
START MANAGER
# 输出日志
Manager started.
# 启动Replicat进程
START REP1
# 输出日志
Sending START request to MANAGER …
REPLICAT REP1 starting
./ggsci
START MANAGER
# 输出日志
Manager started.
# 启动Extract进程
START EXT1
# 输出日志
Sending START request to MANAGER …
EXTRACT EXT1 starting
# 启动Data Pump进程
START DP1
# 输出日志
Sending START request to MANAGER …
EXTRACT DP1 starting
# 在目标系统上启动Manager进程
./ggsci
START MANAGER
# 输出日志
Manager started.
# 启动Replicat进程
START REP1
# 输出日志
Sending START request to MANAGER …
REPLICAT REP1 starting
4.9 监控和验证
# 监控源系统进程状态
./ggsci
INFO ALL
# 输出日志
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:00:05
EXTRACT RUNNING DP1 00:00:00 00:00:03
# 监控目标系统进程状态
./ggsci
INFO ALL
# 输出日志
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:02
# 测试数据复制
# 在源系统上插入数据
sqlplus ggsadmin/ggsadmin
INSERT INTO fgedu.emp VALUES (7369, ‘SMITH’, ‘CLERK’, 7902, SYSDATE, 800, NULL, 20);
COMMIT;
# 输出日志
1 row created.
Commit complete.
# 在目标系统上验证数据
sqlplus ggsadmin/ggsadmin
SELECT * FROM fgedu.emp;
# 输出日志
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
—– ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 01-APR-26 800 20
./ggsci
INFO ALL
# 输出日志
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:00:05
EXTRACT RUNNING DP1 00:00:00 00:00:03
# 监控目标系统进程状态
./ggsci
INFO ALL
# 输出日志
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:02
# 测试数据复制
# 在源系统上插入数据
sqlplus ggsadmin/ggsadmin
INSERT INTO fgedu.emp VALUES (7369, ‘SMITH’, ‘CLERK’, 7902, SYSDATE, 800, NULL, 20);
COMMIT;
# 输出日志
1 row created.
Commit complete.
# 在目标系统上验证数据
sqlplus ggsadmin/ggsadmin
SELECT * FROM fgedu.emp;
# 输出日志
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
—– ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 01-APR-26 800 20
Part05-风哥经验总结与分享
5.1 最佳实践
- 使用最新版本的GoldenGate:获得最新特性和bug修复
- 合理规划架构:根据业务需求选择合适的架构
- 监控系统状态:建立有效的监控机制
- 定期备份:备份GoldenGate配置和Trail文件
- 测试故障转移:定期测试故障转移流程
5.2 常见问题与解决方案
- Extract进程失败:检查源数据库连接和权限
- Replicat进程失败:检查目标数据库连接和权限
- 数据复制延迟:检查网络带宽和系统资源
- Trail文件过大:配置适当的Trail文件大小和清理策略
- 冲突解决:配置适当的冲突检测和解决策略
5.3 经验分享
- 提前规划:在实施前充分了解业务需求和系统要求
- 测试验证:在测试环境中充分测试,确保方案的可行性
- 文档管理:建立完善的文档,记录配置和操作步骤
- 培训人员:对运维人员进行培训,提高技术水平
- 持续优化:根据业务需求和系统运行情况,持续优化配置
学习交流加群风哥QQ113257174
风哥提示:Oracle GoldenGate是一种强大的数据复制解决方案,可用于实时数据集成、灾备和数据迁移等场景。
更多学习教程公众号风哥教程itpux_com
from oracle:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
