目录标题
Oracle GoldenGate(OGG)原理与使用指南
基本原理
Oracle GoldenGate(OGG)基于日志的结构化数据复制软件,通过捕获、存储、传输和应用数据变化,实现源数据库与目标数据库的数据同步。
- 数据捕获 :抽取进程(Extract Process)在源端数据库读取 Online Redo Log 或 Archive Log,解析并提取数据的增删改变化信息。
- 数据存储 :将抽取的信息转换为 GoldenGate 自定义的中间格式,存放在队列文件(trail file)中。
- 数据传输 :利用传输进程将队列文件(trail file)通过 TCP/IP 传送到目标系统。
- 数据应用 :目标端的 Server Collector 进程接收数据变化信息并缓存到 GoldenGate 队列文件(trail file)中,复制进程(Replicat process)读取并解析为 SQL 语句,应用到目标端数据库。
核心组件
- Manager :运行在源端和目标端上,负责启动、监控、重启 GoldenGate 的其它进程,管理 trail 文件及 Reporting,报告错误及事件,分配数据存储空间,发布阀值报告等。
- Extract :运行在数据库源端,负责从源端数据表或者日志中捕获数据,包括初始数据装载和同步变化捕获。
- Data Pump :是一个可选的辅助 Extract 机制,可将源端的 trail 文件发送到远程目标端,支持复杂的数据过滤或者转换,有效规划存储资源。
- Trail :是 GoldenGate 用于存储捕获到的数据变化的文件,存在于源端、目标端或中间系统上。
- Collector :运行在目标端的一个后台进程,与 Pump 进程对应,负责接收从 TCP/IP 网络传输过来的数据库变化,并写到 Trail 文件里。
- Replicat :运行在目标端系统的一个进程,负责读取目标端 trail 文件中的内容,并将其解析为 DML 或 DDL 语句,然后应用到目标数据库中。
使用指南
-
安装与配置
- 根据操作系统选择对应的 OGG 软件包进行安装,安装过程中需指定 GoldenGate 安装目录。
- 安装完成后,配置 Manager 参数文件,设置端口号、日志文件路径等基本信息。
-
抽取进程配置
- 通过创建 Parameter File 来定义抽取进程的相关参数,如抽取的数据源、抽取的对象、日志读取方式等。
- 添加抽取进程和远程trail文件:
ADD EXTRACT ext01,INTEGRATED TRANLOG,BEGIN NOW
和ADD RMTTRAIL /opt/oracle/ogg/dirdat/ex, EXTRACT EXT01
。
-
传输进程配置
- 如果使用 Data Pump 进程进行数据传输,则需要配置其参数文件,指定目标端的 IP 地址、端口号、用户名、密码等连接信息,以及本地 trail 文件的目录和文件名等。
- 添加数据泵进程和远程trail文件:
ADD EXTRACT pmp01, exttrailsource /opt/oracle/ogg/dirdat/ex
和ADD RMTTRAIL /opt/oracle/ogg/dirdat/pt, EXTRACT PMP01
。
-
复制进程配置
- 创建复制进程的 Parameter File,配置目标数据库的相关信息,如用户名、密码、数据库连接信息等,以及映射规则,定义如何将源端的数据变化应用到目标数据库中。
- 添加复制进程:
ADD REPLICAT rep01, EXTRAIL/opt/oracle/ogg/dirdat/pt, CHECKPOINTTABLE c##goldengate.checkpoint
。
-
开启与监控进程
- 使用 GoldenGate 提供的命令行工具来启动、停止和监控各个进程。
- 查看进程状态:
INFO ALL
或SEND [进程名], STATUS
。
通过以上步骤,可以实现 Oracle GoldenGate 的基本配置与使用,完成数据的复制与同步。在实际应用中,根据具体需求进行相应的配置和调整,以满足数据同步的要求。
DYNAMICPORTLIST
在 Oracle GoldenGate 的目标端配置中,DYNAMICPORTLIST
参数用于指定一个动态端口列表,这些端口可供以下进程使用:目标端的 Collector 进程与远程 Extract 进程通信以接收数据、目标端的 Replicat 进程与远程 Extract 进程通信以接收初始加载任务的数据、目标端的 Passive Extract 进程与远程 Collector 通信 ,以及通过 GGSCI 发送远程命令等场景。其主要作用如下:
-
确保通信端口的高可用性:当指定的端口被占用或出现通信故障时,管理进程(Manager)会从
DYNAMICPORTLIST
中选择一个可用的端口,避免通信端口的单点故障,确保进程间通信的连续性,减少因端口问题导致的同步中断。 -
适应进程数量的动态变化:在实际运行中,随着业务的增长或同步任务的增加,可能需要动态启动更多的进程。通过预先指定足够多的端口,可以满足进程数量的扩张需求,而无需频繁地手动调整端口配置,提高了管理效率。
-
满足特定场景下的端口需求:当源端与目标端之间存在防火墙时,可以配置
DYNAMICPORTLIST
参数分配非默认端口用于传输 trailfile,以适应网络环境的限制。 -
优化内部通信:
DYNAMICPORTLIST
还可用于 GoldenGate Director 和 GGSCI 窗口的通信,以及 Replicate 直接路径加载等场景,确保内部通信的顺畅。
在配置时,可以指定多个单独的端口、一个端口范围,或两者结合。例如:DYNAMICPORTLIST 7840-7850
表示指定从 7840 到 7850 的端口范围作为动态端口列表;DYNAMICPORTLIST 7840-7850,7860
表示指定从 7840 到 7850 的端口范围以及 7860 端口作为动态端口列表。
目标端的 Passive Extract 进程是一种特殊的配置
在 Oracle GoldenGate 中,目标端的 Passive Extract 进程是一种特殊的配置,主要用于增强数据传输的安全性和灵活性。以下是其详细介绍:
作用
- 安全增强 :适用于源端处于不被完全信任的网络区域,而目标端位于受信网络的情况。此时,源端的 Passive Extract 进程无需知晓目标端的 IP 地址和 GoldenGate Manager 端口号等敏感信息,从而降低了源端因掌握目标端信息而可能带来的安全风险。
- 灵活管理 :Passive Extract 进程在源端处于被动待命状态,只有在接收到目标端的启动指令后才会开始数据抽取和传输工作,使得数据同步的控制权更多地掌握在目标端手中,便于统一管理和协调数据同步任务。
工作流程
- 在目标端,通过 GGSCI 创建 Alias Extract,并指定源端的 IP 地址、GoldenGate Manager 端口号以及对应的 Passive Extract 的名称。
- 当在目标端启动 Alias Extract 时,目标端的 Manager 进程会将启动请求转发给源端的 Manager 进程。
- 源端的 Manager 进程接收到请求后,启动对应的 Passive Extract 进程。
- Passive Extract 进程从源端数据库获取数据变化信息,并在通过安全验证后,将数据发送到目标端。
- 目标端的 Replicat 进程读取接收到的数据,并将其应用到目标数据库中。
配置步骤
- 在源端,编辑 Manager 参数文件,配置监听端口等基本信息,并添加相应的访问规则以允许目标端的连接请求。
- 在目标端,同样配置 Manager 参数文件,并创建一个 Alias Extract,指定源端的相关信息。
- 在源端,创建 Passive Extract 参数文件,定义数据抽取的相关规则和设置。
- 在源端,使用
ADD EXTRACT
命令添加 Passive Extract,并注册到数据库中,同时指定其为被动模式(PASSIVE
)。 - 在目标端,通过
START
命令启动 Alias Extract,从而间接启动源端的 Passive Extract 进程。
注意事项
- 启动与停止 :Passive Extract 进程只能在目标端通过启动对应的 Alias Extract 来间接启动,不能直接在源端使用
START
命令启动 Passive Extract 进程,否则会报错。 - 参数配置 :在配置 Passive Extract 时,需要确保源端和目标端的参数设置正确无误,包括端口号、IP 地址、进程名称等,以保证数据传输的顺利进行。
- 安全性 :虽然 Passive Extract 提高了安全性,但仍需注意对网络环境和访问权限的管理,以防止未经授权的访问和数据泄露。