Skip to content

Oracle GoldenGate 配置与管理

概述

Oracle GoldenGate是Oracle提供的实时数据复制和集成解决方案,支持异构数据库环境,提供低延迟、高吞吐量的数据复制功能。GoldenGate可以实现实时数据同步、数据迁移、读写分离和灾备等场景。

架构设计

GoldenGate核心组件

GoldenGate由以下核心组件组成:

  • Manager进程:GoldenGate的控制中心,负责管理其他进程、监控系统状态和处理告警
  • Extract进程:从源数据库捕获数据变更(DML和DDL),生成Trail文件
  • Data Pump进程:可选组件,负责将本地Trail文件传输到远程目标系统
  • Replicat进程:从Trail文件中读取数据变更,应用到目标数据库
  • Trail文件:存储捕获的数据变更,类似于Oracle的Redo日志
  • Collector进程:在目标系统上运行,负责接收来自源系统的数据传输

GoldenGate复制模式

GoldenGate支持多种复制模式:

  • 单向复制:从源数据库到目标数据库的单向数据复制
  • 双向复制:源数据库和目标数据库之间的双向数据复制,支持实时同步
  • 级联复制:通过中间系统实现多级数据复制
  • 广播复制:从一个源数据库复制到多个目标数据库
  • 合并复制:将多个源数据库的数据合并到一个目标数据库

环境准备

系统要求

配置项要求
Oracle版本19c或21c
GoldenGate版本19c或21c(与Oracle版本兼容)
操作系统Linux 64位或Windows 64位
内存至少8GB(推荐16GB)
磁盘空间至少100GB
网络带宽至少1Gbps(推荐10Gbps)

初始化配置

  1. 安装GoldenGate软件
  2. 配置源数据库和目标数据库的Oracle参数
  3. 配置源数据库和目标数据库的网络连接
  4. 在源数据库和目标数据库中创建GoldenGate用户
  5. 启用源数据库的补充日志和强制日志记录

单向复制配置

源数据库配置

  1. 创建GoldenGate用户
sql
CREATE USER ggadmin IDENTIFIED BY ggadmin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, DBA TO ggadmin;
GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO ggadmin;
GRANT CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE TO ggadmin;
GRANT CREATE ANY INDEX, ALTER ANY INDEX, DROP ANY INDEX TO ggadmin;
  1. 启用补充日志和强制日志记录
sql
ALTER DATABASE FORCE LOGGING;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;
  1. 配置GoldenGate Manager进程
bash
ggsci
CREATE SUBDIRS
EDIT PARAMS MGR

在Manager参数文件中添加以下内容:

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
  1. 创建Extract进程
bash
ggsci
ADD EXTRACT ext1, TRANLOG, BEGIN NOW
ADD EXTTRAIL /u01/app/ogg/dirdat/et, EXTRACT ext1, MEGABYTES 100
EDIT PARAMS ext1

在Extract参数文件中添加以下内容:

EXTRACT ext1
USERID ggadmin@source_db, PASSWORD ggadmin
EXTTRAIL /u01/app/ogg/dirdat/et
TABLE hr.employees;
TABLE hr.departments;
  1. 创建Data Pump进程(可选)
bash
ggsci
ADD EXTRACT dp1, EXTTRAILSOURCE /u01/app/ogg/dirdat/et
ADD RMTTRAIL /u01/app/ogg/dirdat/rt, EXTRACT dp1, MEGABYTES 100
EDIT PARAMS dp1

在Data Pump参数文件中添加以下内容:

EXTRACT dp1
USERID ggadmin@source_db, PASSWORD ggadmin
RMTHOST target_host, MGRPORT 7809
RMTTRAIL /u01/app/ogg/dirdat/rt
PASSTHRU
TABLE hr.employees;
TABLE hr.departments;

目标数据库配置

  1. 创建GoldenGate用户
sql
CREATE USER ggadmin IDENTIFIED BY ggadmin DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
GRANT CONNECT, RESOURCE, DBA TO ggadmin;
GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO ggadmin;
GRANT CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE TO ggadmin;
GRANT CREATE ANY INDEX, ALTER ANY INDEX, DROP ANY INDEX TO ggadmin;
GRANT INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO ggadmin;
  1. 配置GoldenGate Manager进程
bash
ggsci
CREATE SUBDIRS
EDIT PARAMS MGR

在Manager参数文件中添加以下内容:

PORT 7809
DYNAMICPORTLIST 7810-7909
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /u01/app/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
  1. 创建Checkpoint表
bash
ggsci
DBLOGIN USERID ggadmin@target_db, PASSWORD ggadmin
ADD CHECKPOINTTABLE ggadmin.checkpoint
  1. 创建Replicat进程
bash
ggsci
ADD REPLICAT rep1, EXTTRAIL /u01/app/ogg/dirdat/rt, CHECKPOINTTABLE ggadmin.checkpoint
EDIT PARAMS rep1

在Replicat参数文件中添加以下内容:

REPLICAT rep1
USERID ggadmin@target_db, PASSWORD ggadmin
ASSUMETARGETDEFS
DISCARDFILE /u01/app/ogg/dirrpt/rep1.dsc, APPEND, MEGABYTES 100
MAP hr.employees, TARGET hr.employees;
MAP hr.departments, TARGET hr.departments;

启动GoldenGate进程

  1. 启动源数据库进程
bash
ggsci@source
START MGR
START EXTRACT ext1
START EXTRACT dp1
  1. 启动目标数据库进程
bash
ggsci@target
START MGR
START REPLICAT rep1

版本差异

Oracle 19c vs 21c GoldenGate差异

特性Oracle 19cOracle 21c
自动发现表支持增强自动发现表,支持更多场景
并行复制支持增强并行复制,提高复制性能
双向复制支持增强双向复制,减少冲突概率
云集成基础云集成增强云集成,支持与OCI、AWS、Azure等云平台集成
自动诊断基础自动诊断增强自动诊断和修复能力
安全功能基础安全功能增强安全功能,支持数据加密和访问控制
监控能力基础监控能力增强监控能力,提供更详细的性能指标

监控与管理

监控GoldenGate状态

  1. 查看GoldenGate进程状态
bash
ggsci
INFO ALL
INFO EXTRACT *
INFO REPLICAT *
  1. 查看Extract进程详细信息
bash
ggsci
INFO EXTRACT ext1, DETAIL
STATS EXTRACT ext1
  1. 查看Replicat进程详细信息
bash
ggsci
INFO REPLICAT rep1, DETAIL
STATS REPLICAT rep1
  1. 查看Trail文件信息
bash
ggsci
INFO EXTTRAIL /u01/app/ogg/dirdat/et
INFO RMTTRAIL /u01/app/ogg/dirdat/rt

常见管理任务

  1. 添加新表到复制
bash
ggsci
EDIT PARAMS ext1
# 添加新表到Extract参数文件
TABLE hr.jobs;

EDIT PARAMS dp1
# 添加新表到Data Pump参数文件
TABLE hr.jobs;

EDIT PARAMS rep1
# 添加新表到Replicat参数文件
MAP hr.jobs, TARGET hr.jobs;

# 重新启动进程或刷新参数
ggsci
ALTER EXTRACT ext1, EXTEND TABLE hr.jobs
ALTER EXTRACT dp1, EXTEND TABLE hr.jobs
ALTER REPLICAT rep1, EXTEND MAP hr.jobs, TARGET hr.jobs
  1. 处理复制冲突

查看冲突日志:

bash
cat /u01/app/ogg/dirrpt/rep1.dsc

修复冲突数据,然后重新启动Replicat进程:

bash
ggsci
START REPLICAT rep1
  1. 监控复制延迟
bash
ggsci
LAG EXTRACT ext1
LAG REPLICAT rep1

最佳实践

性能优化

  1. 调整Extract进程参数

    • 增加TRANLOGOPTIONS参数提高日志读取性能
    • 调整EXTTRAIL参数大小,减少文件切换
    • 使用PARALLEL选项提高并行处理能力
  2. 调整Replicat进程参数

    • 使用PARALLEL选项提高并行应用能力
    • 调整BATCHSQL参数提高批量处理能力
    • 使用MAP参数的COLMAP选项优化列映射
  3. 网络优化

    • 使用压缩选项减少网络传输量
    • 调整TCP缓冲区大小提高网络吞吐量
    • 使用多个Data Pump进程分散网络负载

高可用性

  1. 配置Manager进程自动重启

    AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
    AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
  2. 使用备用Manager进程

    • 配置多个Manager进程,确保高可用性
    • 使用虚拟IP地址实现Manager进程的故障转移
  3. 定期备份GoldenGate配置

    • 定期备份dirprm、dirchk、dirdef等目录
    • 定期备份GoldenGate参数文件和配置

安全管理

  1. 使用加密传输

    RMTHOST target_host, MGRPORT 7809, ENCRYPT AES256, KEYNAME mykey
  2. 使用加密Trail文件

    EXTTRAIL /u01/app/ogg/dirdat/et, ENCRYPT AES256, KEYNAME mykey
  3. 限制GoldenGate用户权限

    • 遵循最小权限原则,只授予必要的权限
    • 定期轮换GoldenGate用户密码
    • 使用OS认证或Wallet存储密码

故障处理

常见故障及解决方法

  1. Extract进程无法启动

症状:GGSMGR日志显示"ERROR OGG-00664: Oracle GoldenGate Capture for Oracle, ext1.prm: Failed to attach to logmining server."

解决方法

  • 检查源数据库是否启用了补充日志和强制日志记录
  • 检查GoldenGate用户是否有足够的权限
  • 检查源数据库的LOG_MINING_SERVER参数配置
  1. Replicat进程应用失败

症状:GGSMGR日志显示"ERROR OGG-01003: Oracle GoldenGate Delivery for Oracle, rep1.prm: There is a problem in mapping record to target table HR.EMPLOYEES."

解决方法

  • 检查源表和目标表的结构是否一致
  • 检查Replicat参数文件中的MAP配置是否正确
  • 查看DISCARDFILE获取详细的错误信息
  1. 复制延迟过大

症状:LAG命令显示Extract或Replicat进程延迟超过阈值

解决方法

  • 检查源数据库和目标数据库的性能
  • 调整Extract和Replicat进程的并行度
  • 检查网络带宽和延迟
  • 优化源表和目标表的索引结构

常见问题(FAQ)

Q: GoldenGate支持哪些数据库?

A: GoldenGate支持多种数据库,包括Oracle、MySQL、SQL Server、DB2、PostgreSQL等,实现异构数据库环境的数据复制。

Q: GoldenGate和Data Guard有什么区别?

A: Data Guard是Oracle专用的高可用性解决方案,主要用于Oracle数据库的灾难恢复;而GoldenGate是通用的数据复制解决方案,支持异构数据库环境,提供更灵活的数据复制功能。

Q: 如何实现GoldenGate的高可用性?

A: 可以通过以下方式实现GoldenGate的高可用性:

  • 配置Manager进程自动重启
  • 使用备用Manager进程和虚拟IP地址
  • 配置多个Extract和Replicat进程
  • 定期备份GoldenGate配置

Q: 如何处理GoldenGate复制冲突?

A: 可以通过以下方式处理复制冲突:

  • 使用冲突检测和解决(CDR)功能
  • 配置适当的冲突解决规则
  • 定期监控和处理冲突日志
  • 优化应用设计,减少冲突概率

Q: GoldenGate的复制延迟是多少?

A: GoldenGate的复制延迟通常在毫秒级,具体取决于网络带宽、系统负载和数据量大小。在优化配置的情况下,复制延迟可以控制在1秒以内。

Q: 如何监控GoldenGate的性能?

A: 可以使用以下方式监控GoldenGate的性能:

  • 使用GGSCI命令查看进程状态和延迟
  • 查看GoldenGate日志文件
  • 使用Oracle Enterprise Manager监控GoldenGate
  • 配置第三方监控工具(如Prometheus + Grafana)

总结

Oracle GoldenGate是功能强大的数据复制和集成解决方案,支持异构数据库环境,提供低延迟、高吞吐量的数据复制功能。在配置GoldenGate时,需要根据业务需求选择合适的复制模式和配置参数,并定期监控和管理GoldenGate进程,确保其正常运行。Oracle 21c相比19c在GoldenGate方面有显著增强,包括增强的并行复制、双向复制和云集成等功能。