Oracle Golden Gate用于源数据库与目标数据库的数据复制备份;能够在异构的环境(各类操做系统和数据库)之间实现数据亚秒级的实时复制备份;以及能够在实时数据仓库、数据同步、集中/分发、容灾、数 据库升级和迁移等多个场景下应用;同时还可使用一 对1、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。数据库
本章介绍Oracle GoldenGate的基本术语及其处理逻辑和体系结构的功能。服务器
Oracle GoldenGate能够在整个企业范围内的多个异构平台之间交换和处理数据。它以事务完整性和现有基础架构的最小开销移动已提交的事务。其模块化体系结构使您能够灵活地提取和复制选定的数据记录,事务性更改以及跨各类拓扑结构更改DDL(数据定义语言)。网络
Oracle GoldenGate支持的拓扑架构
表1-1支持的处理方式
oracle
数据库 | 基于日志的提取(捕获) | 非基于日志的提取*(捕获) | 复制(交付) |
---|---|---|---|
*非基于日志的抽取使用捕获模块与Oracle GoldenGate API进行通讯,以将更改数据发送到Oracle GoldenGate。 |
|||
DB2 for iide |
N / A模块化 |
N / A函数 |
Xspa |
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文档。
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逻辑体系结构
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节“组概述”)。
数据泵是源Oracle GoldenGate配置中的辅助Extract组。若是不使用数据泵,Extract必须将捕获的数据操做发送到目标上的远程Trails。然而,在使用数据泵的典型配置中,主要Extract组写入源系统上的Trails。数据泵读取此Trails并经过网络将数据操做发送到目标上的远程Trails。数据泵增长了存储灵活性,而且还用于将主要Extract进程与TCP / IP活动隔离。
一般,数据泵能够执行数据过滤,映射和转换,或者能够在数据泵中进行配置 直通模式,在这种模式下,数据被按原样被动传输,无需操做。直通模式增长了数据泵的吞吐量,由于全部查找对象定义的功能都被忽略。
在大多数商业案例中,您应该使用数据泵。使用数据泵的一些缘由包括:
防止网络和目标故障: 在基本的Oracle GoldenGate配置中,只有目标系统上的Trails,源系统上没有任何地方存储Extract连续Extract到内存中的数据操做。若是网络或目标系统不可用,Extract可能会耗尽内存并异常终止。可是,经过源系统上的Trails和数据泵,能够将捕获的数据移动到磁盘,防止主要Extract的异常结束。当链接恢复时,数据泵从源Trails捕获数据并将其发送到目标系统。
您正在实施数据过滤或转换的几个阶段。使用复杂的过滤或数据转换配置时,能够配置数据泵以在源系统或目标系统上执行第一次转换,或者在中间系统上执行第一次转换,而后使用另外一个数据泵或Replicat组执行第二次转型。
未来自多个来源的数据整合到一个中心目标。同步多个时源数据库和中央目标数据库,则能够将Extract的数据操做存储在每一个源系统上,并在每一个系统上使用数据泵将数据发送到目标系统上的Trails。划分源系统和目标系统之间的存储负载减小了目标系统上大量空间的需求,以适应来自多个来源的数据。
同步 一个来源与多个目标。将数据发送到多个目标系统时,能够在源系统上为每一个目标配置数据泵。若是到任何目标的网络链接失败,数据仍然能够发送到其余目标。
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参考。
为了支持数据库更改的连续Extract和复制,Oracle GoldenGate将捕获的更改的记录临时存储在磁盘中的一系列称为Trails的文件中。根据您配置Oracle GoldenGate的方式,源系统,中介系统,目标系统或这些系统的任何组合均可能存在Trails。在本地系统上,它被称为ExtractTrails(或本地Trails)。在远程系统上,它被称为远程Trails。
经过使用存储Trails,Oracle GoldenGate支持数据准确性和容错性(请参见第1.2.6节“检查点概述”)。Trails的使用还容许Extract和复制活动独立于彼此进行。经过分离这些流程,您能够有更多选择来处理和交付数据。例如,不是连续Extract和复制更改,而是每当目标应用程序须要它们时,能够连续Extract更改,但将它们存储在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操做应用于目标数据库。
Trails文件自己是在处理期间根据须要建立的,可是当使用ADD RMTTRAIL
or ADD EXTTRAIL
命令将Trails文件添加到Oracle GoldenGate配置中时,能够为Trails指定双字符名称。默认状况下,Trails存储在dirdat
Oracle GoldenGate目录的子目录中。
Trails文件会自动老化,以便在不中断文件维护的状况下继续进行处理。在建立每一个新文件时,它会继承两个字符的线索名称,并附加一个从000000到999999(例如c:)的惟一的六位序列号\ggs\dirdat\tr000001
。当序号达到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及其包含的记录的更多信息。
在某些配置中,Oracle GoldenGate将Extract的数据存储在Extract文件中而不是Trails中。Extract文件能够是单个文件,也能够配置为在预期操做系统施加的文件大小限制的状况下转存为多个文件。从这个意义上说,它与Trails类似,只是没有记录检查点。该文件或文件在运行进程中自动建立。适用于Trails的相同版本控制功能也适用于Extract文件。
检查点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.
Manager是Oracle GoldenGate的控制进程。在启动Extract或Replicat以前,Manager必须在Oracle GoldenGate配置中的每一个系统上运行,而且Manager在这些进程正在运行时必须保持运行,以便执行资源管理功能。经理执行如下功能:
启动Oracle GoldenGate进程
启动动态进程
维护进程的端口号
执行Trails管理
建立事件,错误和阈值报告
One Manager进程能够控制许多Extract或Replicat进程。在Windows系统上,Manager能够做为服务运行。有关Manager进程和配置TCP / IP链接的更多信息,请参阅第3章“配置Manager和网络通讯”。
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发起与目标之间的链接。例如,若是目标位于可信网络区域中,但源位于信任度较低的区域,则可能须要从目标启动链接。
根据须要,可使用如下处理类型配置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
参数定义。
要区分系统上的多个Extract或Replicat进程,请定义处理组。例如,要并行复制不一样的数据集,您须要建立两个Replicat组。
一个处理组由一个进程(Extract或Replicat),它的参数文件,它的检查点Checkpoints文件以及与该进程相关的任何其余文件组成。对于Replicat,组还可能包含关联的检查点Checkpoints表。您可使用Oracle GoldenGate命令界面GGSCI中的ADD EXTRACT
和ADD REPLICAT
命令来定义组。
与组相关的全部文件和检查点Checkpoints共享分配给组自己的名称。不管什么时候您发出命令来控制或查看处理,您均可以经过通配符提供组名称或多个组名称。
在使用Oracle GoldenGate时,您可能须要参考提交序列号或CSN。CSN是Oracle GoldenGate为维护事务一致性和数据完整性而构建的标识事务的标识符。它惟一标识事务提交给数据库的时间点。
能够要求CSN将Extract物定位到事务日志中,从新定位追踪中的副本或用于其余目的。它由一些转换函数返回,并包含在报告和某些GGSCI输出中。