OGG 12c中,并行交付有2种模式:集成交付、协同交付。不过集成交付只能针对目标端是oracle数据库(有版本要求)使用,而协同交付则可以在非oracle数据库上使用。

先来看2个问题,

l 为什么需要协同交付?

l 什么是协同交付?

为什么需要协同交付?

在OGG12.1.2之前,如果在目标端碰上性能问题,延迟厉害 ,一般的做法是将交付进程拆分为几个。拆分的方式有2种,一是将一个复制进程中的多张表拆分出来,形成多个复制进程;另一种是将一张大表,按某个字段(一般是主键字段)的值进行拆分,形成多个投递进程。下面是针对同一个复制进程REP1中,多张表的拆分示例:

REP1.PRM

MAP sales.acct1, TARGET sales.acct1;

REP2.PRM

MAP sales.acct2, TARGET sales.acct2;

REP3.PRM

MAP sales.acct3, TARGET sales.acct3;

在这种拆分中,要注意有主外键约束的表应该在同一个进程中。

下面是使用RANGE参数针对一张大表进行拆分的示例:

REP1.PRM

MAP sales.acct, TARGET sales.acct,

FILTER (@RANGE (1, 3, ID));

REP2.PRM

MAP sales.acct, TARGET sales.acct,

FILTER (@RANGE (2, 3, ID));

REP3.PRM

MAP sales.acct, TARGET sales.acct,

FILTER (@RANGE (3, 3, ID));

由于在多个投递进程之间没有协同,当投递数据中包含有DDL、SQL exec的时候,可能会产生问题,如下示例:

假如replicat 1投递记录1,3,replicat2投递记录2,4;如果有一个DDL操作,如下:

如果缺乏正确的协调机制,假如DDL操作在记录4插入之前执行,则记录4的插入就会报错。在协同投递中,下面这些操作都叫堡垒操作(barrier operations):

l DDL

l 使用range参数拆分时进行PK更新;

l 事件操作(Event Actions)

l SQLExec

什么是协同交付?

协同交付是OGG 12c中提供的新功能,支持所有数据库,如 MySQL, SQL Server, Sybase等。

使用协同交付,仍然需要在复制参数指定如何拆分,但是方式比以前更为简单。针对多张表的拆分示例如下:

REP.PRM

MAP sales.acct1, TARGET sales.acct1, THREAD(1);

MAP sales.acct2, TARGET sales.acct2, THREAD(2);

MAP sales.acct,3 TARGET sales.acct3, THREAD(3);

针对大表的拆分示例如下:

REP.PRM

MAP sales.acct, TARGET sales.acct, THREADRANGE(1-3, ID));

可以看到,协同交付的参数比以前的要简单明了,更容易维护。使用协同投递的好处:

l 单一的参数文件;

l 自动控制复制投递的顺序,确保各拆分进程之间交易的完整性;

l 增强错误恢复的能力;

协同交付的一个关键概念就是统一的barrier协同及同步,统一的barrier协同意味着所有需要按顺序执行的操作都是barrier操作,即barrier操作必须等待前序的操作执行完成之后才能执行,所有线程必须要等待barrier线程结束后才能继续。使用协同交付,交付进程当掉之后,各线程之间的投递进度不会差异太大,要解决abended时发生的问题和继续同步也比较容易。

Oracle GoldenGate 12c中的协同交付(Coordinated Delivery)的更多相关文章

  1. Oracle GoldenGate 12c实时捕获SQL Server数据

    在Oracle GoldenGate 12c中,对一些最新的数据库提供了支持,比如SQL Server 2012/2014,当然12c也支持sql server 2008.主要新增特性有: 捕获进程可 ...

  2. Oracle GoldenGate 12c (12.1.2.0.1) for IBM DB2 iSeries

    OGG 12.1.2.0.1 for iSeries 在2014.2.15发布,主要新增如下功能: 本地交付(Native Delivery Replicat):新功能允许用户在IBM i服务器上安装 ...

  3. Oracle GoldenGate 12c 新特性

    针对Oracle 12c的专门优化: 针对Oracle数据库的集成交付模式:提升在oracle DB中目标端的交付速度: 针对非Oracle数据库的协调交付模式:降低非oracle DB中多线程配置的 ...

  4. 76 道 Oracle Goldengate 面试问题

    基础 12c新特性 性能 Troubleshoot 其它 1. Oracle Goldengate 支持部署到哪些拓扑? GoldenGate supports the following topol ...

  5. 浅析Oracle 12c中Data Guard新特性

    浅析Oracle 12c中Data Guard新特性   写在前面 无论是做Oracle运维的小伙伴还是老伙伴,想必对Oracle数据库的数据级灾备核心技术—Data Guard是再熟悉不过了!这项从 ...

  6. [翻译] Oracle Database 12c 新特性Multitenant

    译自官方白皮书http://www.oracle.com/technetwork/database/plug-into-cloud-wp-12c-1896100.pdf,包含新的云计算相关技术的介绍. ...

  7. Oracle GoldenGate理论

    1Oracle GoldenGate处理方法和支持的数据库Oracle GoldenGate在多样和异构的基础IT平台中,可以在事务级别上进行数据交换和数据操作.在保证交易完整性和最小的开销的条件下, ...

  8. Oracle Database 12c 新特性 - Pluggable Database

    在Oracle Database 12c中,可组装式数据库 - Pluggable Database为云计算而生.在12c以前,Oracle数据库是通过Schema来进行用户模式隔离的,现在,可组装式 ...

  9. 为Oracle GoldenGate准备数据库

    了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 ...

随机推荐

  1. unicode 和 utf-8 的关系和解释

    首先一个字节就是8个晶体管同时发出的信号集, unicode就是一套编码,所有的字符都用2个字节表示,不像gbk和gb2312既保持了以前的ansi/ascii的字符单个字节编码,有发明了两个字节保存 ...

  2. Sqoop安装配置及数据导入导出

    前置条件 已经成功安装配置Hadoop和Mysql数据库服务器,如果将数据导入或从Hbase导出,还应该已经成功安装配置Hbase. 下载sqoop和Mysql的JDBC驱动 sqoop-1.2.0- ...

  3. Unity3D在Windows的全屏和跨屏(双屏)方案

    方案1 unity中2个摄像机场景显示在两个显示器屏幕上(一个窗口跨屏) 1.设置场景中的两个摄像机 摄像机1 摄像机2 2.设置发布的平台及分辨率 3.全屏运行游戏,没有标题栏还可以通过-popup ...

  4. <mvc:annotation-driven />

    <mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个 ...

  5. CentOS中输入yum报错:sudo: unable to execute /bin/yum: No such file or directory

    今天尝试更新了下虚拟机CentOS中的python版本后. 运行“yum”命令,就报错:“sudo: unable to execute /bin/yum: No such file or direc ...

  6. Spring Boot 环境变量读取 和 属性对象的绑定

    网上看到的一些方法,结合我看到的 和我们现在使用的.整理成此文: 第一种方法 参见catoop的博客之 Spring Boot 环境变量读取 和 属性对象的绑定(尊重原创) 第二种方法 class不用 ...

  7. 《JavaScript权威指南》读书笔记(一)

    日期 2015-11-28 把之前的读书笔记在我弄丢它之前搬过来~~ 时间过去好久,回头一看理解都不一样了. 重点浏览了一下和Java的不同之处: js是一种宽松类型语言:js不区别整形数值与浮点型数 ...

  8. C#语言基础——7月21日

    C#语言基础 一.语言基础 (一).函数的四要素:      名称,输入,输出,加工(二).主函数.输出语句.输入语句:     Static void Main(string[] args)//下划 ...

  9. JDE函数--获取当前登录人的描述

    业务描述:当前登录人ID为数字,中文姓名保存在描述1字段中 方式: 根据系统变量获取用户的地址号,根据TableIO获取用户描述1.如下图所示: 由于使用AN8时,变量类型不一致,所以使用函数将cha ...

  10. 转:Linux 安装 Mysql

    前段时间安装了Mysql,但是有些问题,就想把他卸载了,重新安装一个,但是没想到在Linux卸载软件是一个很痛苦的事情.   我的Mysql是用命令的方式安装的,就是上一篇文章用到的那个命令(sudo ...