关于 Oracle GoldenGate 中的数据复制组件
数据复制配置的类型
可以针对以下目的配置 Oracle GoldenGate:
-
从一个数据库静态提取数据记录并将这些记录加载到另一个数据库或数据源。
-
持续提取和复制事务性数据操纵语言 (Data Manipulation Language,DML) 操作和数据定义语言 (Data Definition Language,DDL) 更改(适用于支持的数据库),以确保源数据和目标数据保持一致。
-
使用 Oracle GoldenGate 分布式应用和分析,从支持的数据库源提取数据,以及复制到大数据和文件目标。
Oracle GoldenGate 进程
提取
提取流程配置为在需要捕获已提交数据库事务处理的源端点上运行。此过程是 Oracle GoldenGate 的提取或数据捕获机制。
您可以将“提取”处理配置为从以下数据类型获取数据:
-
源表:此源类型用于初始加载。
-
数据库恢复日志或事务处理日志:从日志中捕获时,实际方法因数据库类型而异。此源类型的一个示例是 Oracle AI Database 重做日志。
要了解详细信息,请参阅关于提取。
复制
Replicat 进程将线索文件中的更新应用于目标数据库。它会读取目标数据库上的线索文件,重建 DML 或 DDL 操作,并将其应用于目标数据库。
Replicat 进程使用动态 SQL 编译 SQL 语句一次,然后使用不同的绑定变量多次执行该语句。可以配置复制进程,使其在将复制的操作应用于目标数据库之前等待特定时间。
例如,可能需要延迟,以防止非正常 SQL 传播,控制不同时区的数据到达,或留出时间让其他计划事件发生。
对于 Oracle GoldenGate 的两个常见用例,复制功能如下:
-
初始加载:为初始加载设置 Oracle GoldenGate 时,Replicat 进程将静态数据副本应用于目标对象,或将数据路由到高速批量加载实用程序。
-
更改同步:将 Oracle GoldenGate 设置为使目标数据库与源数据库保持同步时,Replicat 进程将使用本机数据库接口或 ODBC 将源操作应用于目标对象,具体取决于数据库类型。
可以同时为多个复制进程配置一个或多个提取进程以提高吞吐量。为了保持数据完整性,每组进程处理一组不同的对象。要区分复制进程,可以创建具有唯一组名的复制组。
要了解不同类型的复制模式,请参见 About Replicat 。
数据传输的分发路径
分发路径或 DISTPATH 定义端点之间的线索文件的路径。从分发服务配置分发路径。要了解详细信息,请参阅分发服务。
目标启动的分发路径(也称为接收器路径或 RECVPATH)定义了从接收器服务到具有安全目标端点的环境中分发服务的路径。请参见 Add Receiver Service Paths 。
Oracle GoldenGate 对象
不应直接修改 Oracle GoldenGate 对象。只能通过使用 AdminClient 和 Web 界面的 REST API 调用修改参数文件、线索、检查点文件和表。
线索文件
线索是磁盘上的一系列文件,其中 Oracle GoldenGate 存储捕获的更改以支持数据库更改的连续提取和复制。
线索可以存在于源系统、中介系统、目标系统或这些系统的任意组合上,具体取决于您配置 Oracle GoldenGate 的方式。在本地系统上,它被称为提取线索(或本地线索)。在远程系统上,它被称为远程跟踪。通过使用存储线索,Oracle GoldenGate 支持数据准确性和容错能力。使用线索还可以允许提取和复制活动彼此独立地发生。分离这些进程后,您可以选择如何处理和交付数据。例如,您可以不连续提取和复制更改,而是连续提取更改并将其存储在线索中,以便以后在目标应用程序需要时复制到目标。
此外,线索还允许 Oracle AI Database 在异构环境中运行。数据以一致的格式存储在线索文件中,以便复制进程可以读取所有受支持的数据库。
写入线索文件的进程
Oracle GoldenGate 提取将写入线索文件。虽然可以在不同的路径中使用相同的线索名称,但所有本地线索必须具有不同的全路径名称。
在 Oracle GoldenGate MA 中,分配路径和接收器路径用于分配远程路径。分发服务和接收服务分别用于配置分发路径和接收器路径。分发路径通过网络将线索传输到定义的目标。线索可能包含来自多个提取的数据,这些数据传输到远程系统。
从线索文件读取的进程
复制进程和分发路径从线索文件读取。提取使用本地线索捕获 DML 和 DDL 操作,根据需要执行进一步处理,并将数据传输到下一个 Oracle GoldenGate 进程(即复制进程)读取的线索。
在分布式部署的情况下,分发服务进程将读取远程线索文件,并将其通过网络发送到等待的接收器服务进程。
Replicat 进程读取线索并将复制的 DML 和 DDL 操作应用于目标数据库。
线索文件创建和维护
线索文件在处理期间根据需要创建。将线索添加到 Oracle GoldenGate 配置时,可以为线索指定两个字符的名称。默认情况下,线索存储在 Oracle GoldenGate 目录的子目录中。可以为线索文件指定九位数序号。
在创建每个新文件时,它会继承附加有唯一九位数序号(从 000000000 到 9999999)的两字符线索名称。当序号达到 999,999,999 或 999,999(取决于以前的设置)时,“提取”处理将异常终止。
通过设置自动维护任务以清除线索文件,或者从管理服务手动删除线索文件,可以定期清除线索文件。请参阅删除线索文件和清除线索
您可以创建多个线索,以将数据从不同的对象或应用程序中分离。为了最大限度地提高吞吐量并最大限度地减少系统上的 I/O 负载,提取的数据将以大块形式发送到线索中或从线索中输出。将保留线索文件或线索序列的事务处理顺序。
参数文件
大多数 Oracle GoldenGate 功能都通过参数文件中指定的参数进行控制。参数文件是由关联的 Oracle GoldenGate 进程读取的纯文本文件。
Oracle GoldenGate 微服务体系结构使用以下运行时参数:
-
全局运行时参数:这些参数与 GLOBALS 参数不同。它们适用于在参数文件中指定的所有数据库对象。一些全局运行时参数会影响进程行为,而其他参数会影响内存使用率等。
USERIDALIAS是全局运行时参数的示例。全局参数在文件中应仅列出一次。当列出多次时,仅最后一个实例处于活动状态,并且忽略所有其他实例。 -
特定于对象的参数:通过这些参数,您可以对不同的数据库对象集应用不同的处理规则。
GETINSERTS和IGNOREINSERTS是特定于对象的参数的示例。每个对象都位于MAP语句之前,该语句指定要受影响的对象。特定于对象的参数按照其在文件中的列表顺序生效。
运行时参数允许控制 Oracle GoldenGate 同步的各个方面,例如:
-
数据选择、映射、转换和复制
-
DDL 和序列选择、映射和复制(如果支持)
-
错误解决方法
-
日志
-
状态和错误报告
-
系统资源使用情况
-
启动和运行时行为
虽然可以在单个部署中运行多个提取和复制,但每个提取和复制只能与单个参数文件关联。提取和复制以其不区分大小写的名称进行标识。例如,名为 exte 的 Extract 将具有一个名为 exte.prm 的关联参数文件。
检查点文件和表
Oracle GoldenGate 在线索文件中使用检查点文件、检查点表和相应值的组合,以确保数据仅应用于目标平台一次。Oracle GoldenGate 使用这些对象来确保数据正确复制,并在源数据库、目标数据库或 Oracle GoldenGate 本身发生中断或崩溃时用于恢复。这些对象对 Oracle GoldenGate 的运行状况至关重要,在没有 Oracle 支持人员的直接指导下,它们不应被修改或更改。
请参见 Checkpoint Tables Additional Details 。
按提取、路径和复制列出的检查点使用情况
在联机更改同步期间使用检查点来存储进程的当前读写位置。检查点可确保提取标记为同步的数据更改,并防止冗余提取。它们通过防止在需要重新启动系统、网络或 Oracle GoldenGate 进程时丢失数据来提供容错能力。
提取、路径(提取)和传送(复制)将位置保存到检查点文件,以便在出现故障时进行恢复。提取会为其在数据源和线索中的位置创建检查点。Replicat 会为其在线索中的位置创建检查点。下图演示了此工作流:

检查点信息在默认 Oracle GoldenGate 目录中的检查点文件中维护:$OGG_VAR_HOME/lib/checkpt
这不会与数据库中存储的可选检查点表相混淆。提取会将写入检查点(称为当前检查点)放置在线索中。当前检查点是提取当前正在写入的线索中的位置。
检查点存储进程的当前读/写位置。它们可防止冗余提取并提供容错功能。
Oracle GoldenGate 仅出于信息目的使用检查点,因为事实来源位于线索文件中。
路径检查点
在部署之间传输线索文件时,分发服务路径检查点为微服务架构增加了额外的可靠性层。下图介绍了部署中使用的 DISTPATH 检查点机制。

当前读取数是上次读取内容的检查点。检查点每秒检查一次更改。此频率是可配置的。写入检查点标识上次写入到线索的内容。Oracle GoldenGate 跟踪线索中的写入位置。
分配服务路径不了解任何未结事务处理,因为它们仅处理已提交的记录。
复制检查点
Replicat 将在检查点表中创建检查点,以标记其上次读取和应用位置。
要查看进程检查点,请使用带有 SHOWCH 选项的 INFO REPLICAT 命令。基本命令显示当前检查点。
当前检查点是 Replicat 在线索中读取并应用于数据库的最后一条记录的位置。已应用事务处理的真实来源是检查点表。Replicat 和 INFO 命令使用的检查点文件仅是近似和指导信息。请参阅下图以了解此工作流:
