Oracle GoldenGate简介
Oracle Golden Gate用于源数据库与目标数据库的数据复制备份;可以在异构的环境(各种操作系统和数据库)之间实现数据亚秒级的实时复制备份;以及可以在实时数据仓库、数据同步、集中/分发、容灾、数 据库升级和迁移等多个场景下应用;同时还可以使用一 对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。
本章介绍Oracle GoldenGate的基本术语及其处理逻辑和体系结构的功能。
1.1 Oracle GoldenGate 支持的拓扑结构和数据库
Oracle GoldenGate可以在整个企业范围内的多个异构平台之间交换和处理数据。它以事务完整性和现有基础架构的最小开销移动已提交的事务。其模块化体系结构使您可以灵活地提取和复制选定的数据记录,事务性更改以及跨各种拓扑结构更改DDL(数据定义语言)。
Oracle GoldenGate支持的拓扑
![图1-1的描述如下](https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/img/goldengate_configs2.jpg)
“图1-1 Oracle GoldenGate支持的拓扑”
表1-1支持的处理方式
数据库 | 基于日志的提取(捕获) | 非基于日志的提取*(捕获) | 复制(交付) |
---|---|---|---|
*非基于日志的抽取使用捕获模块与Oracle GoldenGate API进行通信,以将更改数据发送到Oracle GoldenGate。 |
|||
DB2 for i |
N / A |
N / A |
X |
DB2 for Linux,UNIX,Windows |
X |
N / A |
X |
DB2 for z / OS |
X |
N / A |
X |
Oracle |
X |
N / A |
X |
MySQL的 |
X |
N / A |
X |
SQL / MX |
X |
N / A |
X |
SQL Server |
X |
N / A |
X |
SYBASE |
X |
N / A |
X |
Teradata DB |
N / A |
X |
X |
TimesTen* |
N / A |
N / A |
X |
有关处理方式,支持的拓扑和功能以及配置要求的完整信息,请参阅数据库的Oracle GoldenGate文档。
1.2 Oracle GoldenGate架构
Oracle GoldenGate可以配置为以下用途:
-
从一个数据库静态提取数据记录并将这些记录加载到另一个数据库。
-
连续提取和复制事务性数据操作语言(DML)操作和数据定义语言(DDL)更改(用于支持的数据库)以保持源数据和目标数据的一致性。
-
从数据库中提取并复制到数据库外部的文件。
Oracle GoldenGate由以下组件组成:
-
Extract
-
Data pump
-
Replicat
-
Trails or extract files
-
Checkpoints
-
Manager
-
Collector
图1-2说明了用于初始数据加载和DML和DDL操作同步的Oracle GoldenGate的逻辑体系结构。这是基本配置。根据业务需求推荐此模型的变体。
图1-2 Oracle GoldenGate逻辑体系结构
![图1-2的描述如下](https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/img/logicalarch2.jpg)
“图1-2 Oracle GoldenGate逻辑体系结构”
1.2.1 Extract 提取
Extract进程是Oracle GoldenGate的Extract(捕获)机制。根据数据库和实施要求,Extract可以在源系统或下游数据库或两者上运行。
您可以通过以下方式之一配置Extract:
-
初始加载:对于初始数据加载,Extract直接从其源对象中Extract(捕获)当前静态数据集。
-
更改同步:为了使源数据与另一组数据保持同步,Extract在初始同步发生后捕获DML和DDL操作。
从a中Extract捕获 数据源可以是以下之一:
-
源表,如果运行是初始加载。
-
数据库恢复日志或事务日志(例如Oracle重做日志或SQL / MX审计Trails)。从日志中捕获的实际方法因数据库类型而异。例如,Oracle GoldenGate for Oracle提供了一种集成捕获模式,Extract可以直接与数据库登录服务器交互,从而挖掘Oracle事务流。请参见“关于综合捕获”在安装和配置的Oracle GoldenGate用于Oracle数据库有关集成捕获更多信息。
-
第三方捕获模块。此方法提供了一个通信层,可将数据和元数据从外部API传递到Extract API。数据库供应商或第三方供应商提供了Extract数据操作并将它们传递到Extract的组件。
当配置更改同步时,Extract将捕获在“抽取”配置中对对象执行的DML和DDL操作。Extract存储这些操作,直到它收到包含它们的事务的提交记录或回滚。收到回滚时,Extract将放弃该事务的操作。当收到一个提交时,Extract将该事务持续存储在一系列名为trail的文件中,在这里它被排队等待传播到目标系统。每笔交易中的所有操作都会按顺序组织的交易单位写入线索。这种设计可确保速度和数据完整性。
注意:
即使同一事务也可能包含对“抽取”配置中的对象的操作,Extract将忽略对不在“抽取”配置中的对象的操作。多个Extract进程可以同时在不同的对象上运行。例如,两个Extract进程可以并行Extract并传输两个Replicat进程(具有两个持久化Trails),以在数据库较大时将目标延迟降至最低。要区分不同的Extract进程,请为每个Extract进程分配一个组名(请参见第1.4节“组概述”)。
1.2.2 Data pump数据泵
数据泵是源Oracle GoldenGate配置中的辅助Extract组。如果不使用数据泵,Extract必须将捕获的数据操作发送到目标上的远程Trails。然而,在使用数据泵的典型配置中,主要Extract组写入源系统上的Trails。数据泵读取此Trails并通过网络将数据操作发送到目标上的远程Trails。数据泵增加了存储灵活性,并且还用于将主要Extract进程与TCP / IP活动隔离。
通常,数据泵可以执行数据过滤,映射和转换,或者可以在数据泵中进行配置 直通模式,在这种模式下,数据被按原样被动传输,无需操作。直通模式增加了数据泵的吞吐量,因为所有查找对象定义的功能都被忽略。
在大多数商业案例中,您应该使用数据泵。使用数据泵的一些原因包括:
-
防止网络和目标故障: 在基本的Oracle GoldenGate配置中,只有目标系统上的Trails,源系统上没有任何地方存储Extract连续Extract到内存中的数据操作。如果网络或目标系统不可用,Extract可能会耗尽内存并异常终止。但是,通过源系统上的Trails和数据泵,可以将捕获的数据移动到磁盘,防止主要Extract的异常结束。当连接恢复时,数据泵从源Trails捕获数据并将其发送到目标系统。
-
您正在实施数据过滤或转换的几个阶段。使用复杂的过滤或数据转换配置时,可以配置数据泵以在源系统或目标系统上执行第一次转换,或者在中间系统上执行第一次转换,然后使用另一个数据泵或Replicat组执行第二次转型。
-
将来自多个来源的数据整合到一个中心目标。同步多个时源数据库和中央目标数据库,则可以将Extract的数据操作存储在每个源系统上,并在每个系统上使用数据泵将数据发送到目标系统上的Trails。划分源系统和目标系统之间的存储负载减少了目标系统上大量空间的需求,以适应来自多个来源的数据。
-
同步 一个来源与多个目标。将数据发送到多个目标系统时,可以在源系统上为每个目标配置数据泵。如果到任何目标的网络连接失败,数据仍然可以发送到其他目标。
1.2.3 Replicat复制备份
Replicat进程在目标系统上运行,读取该系统上的线索,然后重新构建DML或DDL操作并将其应用于目标数据库。Replicat使用动态SQL编译SQL语句一次,然后用不同的绑定变量执行多次。
您可以通过以下方式之一配置Replicat:
-
初始加载:对于初始数据加载,Replicat可以将静态数据副本应用于目标对象或将其路由到高速批量加载实用程序。
-
更改同步:配置更改同步时,Replicat根据数据库类型将复制的源操作应用于使用本机数据库接口或ODBC的目标对象。
您可以使用多个Replicat 并行处理一个或多个Extract进程和数据泵以提高吞吐量。为了保持数据的完整性,每组进程处理一组不同的对象。要区分Replicat进程,请为每个进程分配一个组名(请参见第1.4节“组概述”)。
您可以使用协调或集成模式配置一个Replicat,而不是使用多个Replicat进程。
-
Oracle GoldenGate支持的所有数据库都支持协调模式。在协调模式下,Replicat是线程化的。一个协调器线程产生并协调一个或多个并行执行复制SQL操作的线程。协调的Replicat使用一个参数文件,并将其作为一个单元进行监视和管理。有关更多信息,请参见第14.7节“创建在线复制组”。
-
Oracle版本11.2.0.4或更高版本支持集成模式。在集成模式下,Replicat利用Oracle数据库中可用的应用处理功能。在单个Replicat配置中,称为应用服务器的多个入站服务器子进程并行应用事务,同时保留原始事务的原子性。有关集成模式的更多信息,请参阅安装和配置Oracle GoldenGate for Oracle数据库。
您可以延迟Replicat,以便在将复制操作应用到目标数据库之前等待特定时间。例如,延迟可能是需要的,以防止错误SQL的传播,控制跨越不同时区的数据到达,或者允许其他计划事件发生的时间。延迟的长度由DEFERAPPLYINTERVAL
参数控制。
各种参数控制着Replicat将源事务转换为目标事务的方式。这些参数包括BATCHSQL
,GROUPTRANSOPS
,和MAXTRANSOPS
。有关这些和其他Replicat参数的更多信息,请参阅适用于Windows和UNIX的Oracle GoldenGate参考。
1.2.4 Trails文件 or extract files
为了支持数据库更改的连续Extract和复制,Oracle GoldenGate将捕获的更改的记录临时存储在磁盘中的一系列称为Trails的文件中。根据您配置Oracle GoldenGate的方式,源系统,中介系统,目标系统或这些系统的任何组合都可能存在Trails。在本地系统上,它被称为ExtractTrails(或本地Trails)。在远程系统上,它被称为远程Trails。
通过使用存储Trails,Oracle GoldenGate支持数据准确性和容错性(请参见第1.2.6节“检查点概述”)。Trails的使用还允许Extract和复制活动独立于彼此进行。通过分离这些流程,您可以有更多选择来处理和交付数据。例如,不是连续Extract和复制更改,而是每当目标应用程序需要它们时,可以连续Extract更改,但将它们存储在Trails中以便稍后复制到目标。
1.2.4.1写入和读取Trails的过程
主要Extract和数据泵Extract写入Trails。每个在线Extract进程都必须链接到一个Trails。只有一个主要Extract进程可以写入给定的本地Trails。所有本地Trails必须有不同的名称。
多个数据泵Extract进程可以分别写入相同名称的Trails,但物理Trails本身必须驻留在不同的远程系统上,例如数据分布拓扑中。例如,名为数据泵1pump
和命名的数据泵2pump
都可以驻留在sys01上并写入到名为的远程Trails aa。数据泵
1pump
可以通知之后Trails aa
的sys02
,而数据泵2pump
可以通知之后Trails aa
的sys03
。
读取Trails的过程是:
-
数据泵Extract:从链接到前一个Extract(通常是主要Extract)的本地Trails中ExtractDML和DDL操作,如果需要执行进一步处理,并将数据传输到由下一个Oracle GoldenGate进程读取的Trails下游(通常是Replicat,但如果需要可以是另一个数据泵)。
-
复制:读取Trails并将复制的DML和DDL操作应用于目标数据库。
1.2.4.2Trails创建和维护
Trails文件本身是在处理期间根据需要创建的,但是当使用ADD RMTTRAIL
or ADD EXTTRAIL
命令将Trails文件添加到Oracle GoldenGate配置中时,可以为Trails指定双字符名称。默认情况下,Trails存储在dirdat
Oracle GoldenGate目录的子目录中。
Trails文件会自动老化,以便在不中断文件维护的情况下继续进行处理。在创建每个新文件时,它会继承两个字符的线索名称,并附加一个从000000到999999(例如c:)的唯一的六位序列号ggsdirdat r000001
。当序号达到999999时,编号从000000开始,并覆盖以前的Trails文件。可以使用Manager参数以常规方式清除Trails文件PURGEOLDEXTRACTS
。
您可以创建多个Trails以将数据从不同的对象或应用程序中分离出来。将在TABLE
or SEQUENCE
参数中指定的对象链接到在Extract参数文件中使用EXTTRAIL
or RMTTRAIL
参数指定的Trails。
为了最大限度地提高吞吐量,并尽量减少系统上的I / O负载,Extract的数据将以大块的形式发送到Trails和Trails外。交易订单被保留。
请参阅附录C“关于Oracle GoldenGate Trail”以获取有关Trails及其包含的记录的更多信息。
1.2.5 Extract文件
在某些配置中,Oracle GoldenGate将Extract的数据存储在Extract文件中而不是Trails中。Extract文件可以是单个文件,也可以配置为在预期操作系统施加的文件大小限制的情况下转存为多个文件。从这个意义上说,它与Trails相似,只是没有记录检查点。该文件或文件在运行进程中自动创建。适用于Trails的相同版本控制功能也适用于Extract文件。
1.2.6 Checkpoints检查点
检查点Checkpoints将进程的当前读取和写入位置存储到磁盘以用于恢复目的。检查点Checkpoints可确保标记为同步的数据更改实际上由Extract捕获并通过Replicat应用于目标,并防止冗余处理。它们通过防止系统,网络或Oracle GoldenGate进程需要重新启动时的数据丢失来提供容错能力。对于复杂的同步配置,检查点Checkpoints允许多个Extract或Replicat进程从同一组Trails中读取。
检查点Checkpoints使用进程间确认来防止消息在网络中丢失。Oracle GoldenGate拥有专有的保证消息传递技术。
Extract为其在数据源和Trails中的位置创建检查点Checkpoints。由于Extract仅捕获已提交的事务,因此它会Trails所有未完成事务中的操作,如果它们中的任何一个已提交。这需要Extract将一个检查点Checkpoints记录在事务日志中当前正在读取的位置,以及最早的打开事务的开始位置,该位置可以位于当前日志或任何前面的日志中。
为了控制在Oracle数据库中断之后必须重新处理的事务日志的数量,Extract还以特定的时间间隔将当前状态和处理数据保存到磁盘,包括长时间运行的状态和数据(如果有的话)交易。如果Extract在其中一个间隔后停止,它可以从上一个间隔内的位置或上一个检查点Checkpoints恢复,而不必返回到最早出现的最早的开放式长时间运行事务的日志位置。有关更多信息,请参阅“ 适用于Windows和UNIX的Oracle GoldenGate参考”中的BR
参数。
Replicat为它在Trails中的位置创建检查点Checkpoints。Replicat将这些检查点Checkpoints存储在目标数据库中的称为检查点Checkpoints表的表中,也存储在磁盘上的检查点Checkpoints文件中。检查点Checkpoints表与用户指定的名称和位置一起存储。检查点Checkpoints文件存储在dirchk
Oracle GoldenGate目录的子目录中。
每次交易完成后,Replicat会将关于该交易的信息写入检查点Checkpoints表中的一行,并将交易与特定Trails文件中的唯一位置相关联。当它完成一个事务时,Replicat还会向检查点Checkpoints文件写入一个检查点Checkpoints。定期,Replicat还将其当前读取位置写入检查点Checkpoints文件。这些头寸通常不在交易边界,而是在交易中的某个点。间隔长度由CHECKPOINTSECS
参数控制。
由于检查点Checkpoints表是数据库的一部分,并受益于数据库恢复系统,因此它为Replicat提供了更高效的恢复点。检查点Checkpoints文件中的最后一个检查点Checkpoints可能不是最近的事务边界。它可能是Replicat尚未应用的事务的中间或已应用的早期事务。检查点Checkpoints表确保Replicat以正确的事务边界开始,以便每个事务仅应用一次。在某些情况下,检查点Checkpoints表中的信息可用于恢复,但主要用于某些目的,例如INFO
GGSCI中的命令。
Oracle GoldenGate环境的定期备份(包括Trails)应与您的数据库备份,恢复和保留策略相匹配。将数据库(及其检查点Checkpoints表)恢复到较早的时间段会导致Replicat重新定位到与该时间匹配的早期检查点Checkpoints。如果此时间段内所需的Trails文件已经从系统中老化,则必须从备份中恢复它们。要了解Trails如何保持和老化,请参阅“Trails概述”。
非连续类型的配置不需要检查点Checkpoints,例如批量加载或初始加载。如果出现故障,则可以从原始起点重新开始这些进程。
有关检查点Checkpoints和检查点表的更多信息,请参阅附录E.
1.2.7 Manager管理
Manager是Oracle GoldenGate的控制进程。在启动Extract或Replicat之前,Manager必须在Oracle GoldenGate配置中的每个系统上运行,并且Manager在这些进程正在运行时必须保持运行,以便执行资源管理功能。经理执行以下功能:
-
启动Oracle GoldenGate进程
-
启动动态进程
-
维护进程的端口号
-
执行Trails管理
-
创建事件,错误和阈值报告
One Manager进程可以控制许多Extract或Replicat进程。在Windows系统上,Manager可以作为服务运行。有关Manager进程和配置TCP / IP连接的更多信息,请参阅第3章“配置Manager和网络通信”。
1.2.8 Collector收集器
Collector是在连续的联机更改同步处于活动状态时在目标系统的后台运行的进程。Collector执行以下操作:
-
根据远程Extract到管理器的连接请求,扫描并绑定到可用端口,然后将端口号发送到管理器以分配到请求的Extract进程。
-
接收Extract发送的Extract的数据库更改并将它们写入Trails文件。Manager需要网络连接时自动启动Collector,因此Oracle GoldenGate用户不会与其交互。Collector只能从一个Extract进程接收信息,因此每个Extract器都有一个Collector用于您。Collector在关联的Extract进程终止时终止。
注意:
如果需要,Collector可以手动运行。这被称为a静态Collector(而不是常规的动态Collector)。多个Extract进程可以共享一个静态Collector; 然而,一对一的比例是最佳的。可以使用静态Collector来确保进程在特定端口上运行。有关静态Collector的更多信息,请参阅适用于Windows和UNIX的Oracle GoldenGate参考。有关Manager如何分配端口的更多信息,请参阅第3章“配置Manager和网络通信”。
默认情况下,Extract会将源系统上的TCP / IP连接发送到目标上的Collector,但可配置Oracle GoldenGate以便Collector发起与目标之间的连接。例如,如果目标位于可信网络区域中,但源位于信任度较低的区域,则可能需要从目标启动连接。
1.3 Process Types进程类型
根据需要,可以使用以下处理类型配置Oracle GoldenGate。
-
一个在线Extract或Replicat进程中运行,直到用户停止。在线进程在线索中维护恢复检查点Checkpoints,以便在中断后恢复处理。您可以使用联机进程来持续Extract和复制DML和DDL操作(在支持的情况下)以保持源和目标对象的同步。在
EXTRACT
和REPLICAT
参数适用于这一进程的类型。 -
甲源是表(也被称为初始负载Extract物)Extract进程Extract用于初始加载到另一个数据库当前一组静态数据直接从在制备源对象。此进程类型不使用检查点Checkpoints。该
SOURCEISTABLE
参数适用于此流程类型。 -
一个特殊的运行 Replicat进程中的应用已知数据的开始和结束点。您可以使用特殊的Replicat运行初始数据加载,并且还可以与联机Extract一起使用,以批量应用数据更改,例如每天一次而不是连续进行。此进程类型不维护检查点Checkpoints,因为可以使用相同的开始点和结束点开始运行。该
SPECIALRUN
参数适用于此流程类型。 -
甲远程任务是一种特殊类型的初始负荷的处理,其中Extract物通过TCP / IP与Replicat直接通信的。采集Trails或文件中的Collector进程和临时磁盘存储都不被使用。该任务在Extract参数文件中用
RMTTASK
参数定义。
1.4 Groups组
要区分系统上的多个Extract或Replicat进程,请定义处理组。例如,要并行复制不同的数据集,您需要创建两个Replicat组。
一个处理组由一个进程(Extract或Replicat),它的参数文件,它的检查点Checkpoints文件以及与该进程相关的任何其他文件组成。对于Replicat,组还可能包含关联的检查点Checkpoints表。您可以使用Oracle GoldenGate命令界面GGSCI中的ADD EXTRACT
和ADD REPLICAT
命令来定义组。
与组相关的所有文件和检查点Checkpoints共享分配给组本身的名称。无论何时您发出命令来控制或查看处理,您都可以通过通配符提供组名称或多个组名称。
1.5 CSN提交序号
在使用Oracle GoldenGate时,您可能需要参考提交序列号或CSN。CSN是Oracle GoldenGate为维护事务一致性和数据完整性而构建的标识事务的标识符。它唯一标识事务提交给数据库的时间点。
可以要求CSN将Extract物定位到事务日志中,重新定位追踪中的副本或用于其他目的。它由一些转换函数返回,并包含在报告和某些GGSCI输出中。
原文Introduction to Oracle GoldenGate