这两种Oracle GoldenGate体系结构共有许多数据复制过程。
1、什么是Extract?
Extract是一个过程,该过程被配置为针对源数据库运行或被配置为在下游挖掘数据库(仅Oracle)上运行,以捕获在其他位置的真实源数据库中生成的数据。此过程是Oracle GoldenGate的提取或数据捕获机制。
您可以为以下用例配置摘录:
-
初始负载:将Oracle GoldenGate设置为初始负载时,提取过程直接从源对象捕获当前的静态数据集。
-
更改同步:设置Oracle GoldenGate时为了使源数据与另一组数据保持同步,提取过程将在初始同步发生后捕获对已配置对象执行的DML和DDL操作。提取可以与数据库在同一台服务器上本地运行,也可以使用下游的集成提取在另一台服务器上本地运行,以减少开销。它存储这些操作,直到收到包含它们的事务的提交记录或回滚。如果收到回滚,它将丢弃该事务的操作。如果收到提交,它将把事务保留在磁盘中,称为一系列的文件,该文件称为跟踪,在队列中排队等待传播到目标系统。每个事务中的所有操作均作为顺序组织的事务单元写入到跟踪中,并按照它们被提交到数据库的顺序(提交序列顺序)进行。这种设计可确保速度和数据完整性。
注意:
即使事务可能还包括对在提取配置中的对象的操作,提取也会忽略对不在提取配置中的对象的操作。
提取过程可以配置为从三种类型的数据源中提取数据:
- 源表:此源类型用于初始加载。
- 数据库恢复日志或事务日志:从日志捕获时,实际方法取决于数据库类型。Oracle数据库重做日志就是这种源类型的一个示例。
- 第三方捕获模块:此方法提供了一个通信层,该通信层将数据和元数据从外部API传递到Extract API。数据库供应商或第三方供应商提供了提取数据操作并将其传递给Extract的组件。
2、什么是Trail?
Trail是磁盘上的一系列文件,Oracle GoldenGate在其中存储捕获的更改,以支持对数据库更改的连续提取和复制。
跟踪可以存在于源系统,中间系统,目标系统或这些系统的任何组合上,具体取决于您如何配置Oracle GoldenGate。在本地系统上,它被称为提取路径(或本地路径)。在远程系统上,它称为远程路径。通过使用存储线索,Oracle GoldenGate支持数据准确性和容错能力。使用跟踪还可以使提取和复制活动彼此独立发生。将这些过程分开,您可以在如何处理和传递数据方面有更多选择。例如,您可以连续提取更改并将其存储在跟踪中,以供以后在目标应用程序需要时复制到目标中,而不是连续提取和复制更改。
另外,跟踪允许Oracle数据库在异构环境中运行。数据以一致的格式存储在跟踪文件中,因此可以由“复制”过程读取所有支持的数据库。有关更多信息,请参见关于Oracle GoldenGate Trail。
写入跟踪文件的进程:
在Oracle GoldenGate Classic中,提取和数据泵过程将写入跟踪。只有一个提取过程可以写入给定的本地路径。尽管可以在不同路径中使用相同的路径名称,但是所有本地路径必须具有不同的全路径名称。
多个数据泵进程可以各自写入相同名称的路径,但是物理路径本身必须驻留在不同的远程系统上,例如数据分布拓扑中。例如,名为Pumpm的数据泵和名为Pumpn的数据泵都可以驻留在sys01上并写入名为的远程跟踪aa
。Pumpm可以写入sys02上的aa尾迹,而Pumpn可以写入sys03上的aa尾迹。
在Oracle GoldenGate MA中,分发服务器和分发路径用于写入远程跟踪。
从跟踪文件读取的进程:
数据泵和复制过程从跟踪文件中读取。数据泵从链接到Extract流程的本地跟踪中提取DML和DDL操作,如果需要,执行进一步的处理,并将数据传输到下游的下一个Oracle GoldenGate进程读取的跟踪(通常是Replicat,但是可以如果需要,则使用另一个数据泵)。
复制过程将读取跟踪,并将复制的DML和DDL操作应用于目标数据库。
跟踪文件的创建和维护:
在处理过程中会根据需要创建跟踪文件。使用ADD RMTTRAIL
或ADD EXTTRAIL
命令将路径添加到Oracle GoldenGate配置时,可以为路径指定一个两个字符的名称。默认情况下,线索存储在dirdat
Oracle GoldenGate目录的子目录中。您可以使用TRAIL_SEQLEN_9D | TRAIL_SEQLEN_6D GLOBALS
参数指定六位或九位的序列号;TRAIL_SEQLEN_9D
默认设置。
创建每个新文件时,它会继承两个字符的跟踪名称,并在其后附加一个唯一的9位数字序列号(例如,从000000000到999999999 c:\ggs\dirdat\tr000000001
)。当序列号达到999999999时,编号从000000000开始,并且先前的跟踪文件将被覆盖。可以使用Manager参数定期清除跟踪文件 PURGEOLDEXTRACTS
。
您可以创建多个跟踪,以将数据与不同的对象或应用程序分开。您将在TABLE
or SEQUENCE
参数中指定的对象链接到在Extract参数文件中使用EXTTRAIL
or RMTTRAIL
参数指定的路径。为了最大化吞吐量并最小化系统上的I / O负载,提取的数据以大块的形式发送到路径中和从路径中发送出去。交易订单被保留。
将现有路径转换为9位数字序列号
您可以将命名提取组的跟踪文件从6位检查点记录转换为9位检查点记录。使用 convchk
本地命令可正常停止您的提取,然后convchk
按如下所示进行升级,以将其转换为9位数字的轨迹 :
convchk extract trail seqlen_9d
开始提取
您可以使用以下convchk
命令通过相同的过程将9位数字降级为6位数字 :
convchk extract trail seqlen_6d
注意:Extract Files:您可以配置Oracle GoldenGate将提取的数据存储在提取文件中而不是跟踪中。提取文件可以是单个文件,也可以将其配置为在预期操作系统限制文件大小的情况下滚动到多个文件中。除了不记录检查点外,它与跟踪类似。一个或多个文件在运行期间自动创建。适用于跟踪的相同版本控制功能也适用于提取文件。
什么是Replicat?
Replicat是将数据传递到目标数据库的过程。它读取目标数据库上的跟踪文件,重构DML或DDL操作,并将其应用于目标数据库。
Replicat过程使用动态SQL一次编译一条SQL语句,然后使用不同的绑定变量多次执行该语句。您可以配置复制过程,以便在将复制的操作应用于目标数据库之前等待特定的时间。例如,可能需要延迟来防止错误SQL的传播,控制跨不同时区的数据到达或为其他计划中的事件发生留出时间。
对于Oracle GoldenGate的两个常见用例,复制过程的功能如下:
- 初始负载:当您为初始负载设置Oracle GoldenGate时,复制过程会将静态数据副本应用于目标对象,或将数据路由到高速批量加载实用程序。
- 更改同步:设置Oracle GoldenGate以使目标数据库与源数据库保持同步时,复制过程会使用本机数据库接口或ODBC将源操作应用于目标对象,具体取决于数据库类型。
您可以并行配置多个复制过程以及一个或多个提取过程和数据泵,以提高吞吐量。为了保持数据完整性,每组进程都处理不同的对象集。为了区分复制过程,请为每个过程分配一个组名
如果您不想使用多个复制过程,则可以并行,协调,集成模式配置单个复制过程。
- 并行模式并行复制使用非集成选项支持所有数据库。并行复制仅支持从具有完整元数据的跟踪复制数据,这需要经典的跟踪格式。与集成复制类似,它考虑了事务之间的依赖性。依赖性计算,映射和应用程序的并行性在数据库外部执行,因此可以卸载到另一台服务器。在此过程中维护事务完整性。此外,并行复制通过将大型事务拆分为多个块并并行应用来支持大型事务的并行应用。
- Oracle GoldenGate支持的所有数据库都支持协调模式。在协调模式下,复制过程是线程化的。一个协调器线程产生并协调一个或多个并行执行复制的SQL操作的线程。协调的复制过程使用一个参数文件,并作为一个单元进行监视和管理。
- Oracle Database 11.2.0.4或更高版本支持集成模式。在集成模式下,复制过程利用了Oracle数据库中可用的应用处理功能。在单个Replicat配置中,称为应用服务器的多个入站服务器子进程将并行应用事务,同时保留原始事务的原子性。
你可以延迟复制,以便在将复制的操作应用于目标数据库之前,它等待特定的时间。可能需要延迟,例如,以防止错误的SQL传播,控制跨不同时区的数据到达或为其他计划的事件发生留出时间。延迟的长度由DEFERAPPLYINTERVAL
参数控制。