关于 Oracle GoldenGate 中的数据复制组件

数据复制配置的类型

可以针对以下目的配置 Oracle GoldenGate:

Oracle GoldenGate 进程

提取

提取流程配置为在需要捕获已提交数据库事务处理的源端点上运行。此过程是 Oracle GoldenGate 的提取或数据捕获机制。

您可以将“提取”处理配置为从以下数据类型获取数据:

要了解详细信息,请参阅关于提取。

复制

Replicat 进程将线索文件中的更新应用于目标数据库。它会读取目标数据库上的线索文件,重建 DML 或 DDL 操作,并将其应用于目标数据库。

Replicat 进程使用动态 SQL 编译 SQL 语句一次,然后使用不同的绑定变量多次执行该语句。可以配置复制进程,使其在将复制的操作应用于目标数据库之前等待特定时间。

例如,可能需要延迟,以防止非正常 SQL 传播,控制不同时区的数据到达,或留出时间让其他计划事件发生。

对于 Oracle GoldenGate 的两个常见用例,复制功能如下:

可以同时为多个复制进程配置一个或多个提取进程以提高吞吐量。为了保持数据完整性,每组进程处理一组不同的对象。要区分复制进程,可以创建具有唯一组名的复制组。

要了解不同类型的复制模式,请参见 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 微服务体系结构使用以下运行时参数:

运行时参数允许控制 Oracle GoldenGate 同步的各个方面,例如:

虽然可以在单个部署中运行多个提取和复制,但每个提取和复制只能与单个参数文件关联。提取和复制以其不区分大小写的名称进行标识。例如,名为 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 检查点机制。

DISTPATH 检查点的工作流

当前读取数是上次读取内容的检查点。检查点每秒检查一次更改。此频率是可配置的。写入检查点标识上次写入到线索的内容。Oracle GoldenGate 跟踪线索中的写入位置。

分配服务路径不了解任何未结事务处理,因为它们仅处理已提交的记录。

复制检查点

Replicat 将在检查点表中创建检查点,以标记其上次读取和应用位置。

要查看进程检查点,请使用带有 SHOWCH 选项的 INFO REPLICAT 命令。基本命令显示当前检查点。

当前检查点是 Replicat 在线索中读取并应用于数据库的最后一条记录的位置。已应用事务处理的真实来源是检查点表。Replicat 和 INFO 命令使用的检查点文件仅是近似和指导信息。请参阅下图以了解此工作流:

提取检查点和复制检查点数据流