Oracle GoldenGate 12c中的协同交付(Coordinated Delivery)
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)的更多相关文章
- Oracle GoldenGate 12c实时捕获SQL Server数据
在Oracle GoldenGate 12c中,对一些最新的数据库提供了支持,比如SQL Server 2012/2014,当然12c也支持sql server 2008.主要新增特性有: 捕获进程可 ...
- 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服务器上安装 ...
- Oracle GoldenGate 12c 新特性
针对Oracle 12c的专门优化: 针对Oracle数据库的集成交付模式:提升在oracle DB中目标端的交付速度: 针对非Oracle数据库的协调交付模式:降低非oracle DB中多线程配置的 ...
- 76 道 Oracle Goldengate 面试问题
基础 12c新特性 性能 Troubleshoot 其它 1. Oracle Goldengate 支持部署到哪些拓扑? GoldenGate supports the following topol ...
- 浅析Oracle 12c中Data Guard新特性
浅析Oracle 12c中Data Guard新特性 写在前面 无论是做Oracle运维的小伙伴还是老伙伴,想必对Oracle数据库的数据级灾备核心技术—Data Guard是再熟悉不过了!这项从 ...
- [翻译] Oracle Database 12c 新特性Multitenant
译自官方白皮书http://www.oracle.com/technetwork/database/plug-into-cloud-wp-12c-1896100.pdf,包含新的云计算相关技术的介绍. ...
- Oracle GoldenGate理论
1Oracle GoldenGate处理方法和支持的数据库Oracle GoldenGate在多样和异构的基础IT平台中,可以在事务级别上进行数据交换和数据操作.在保证交易完整性和最小的开销的条件下, ...
- Oracle Database 12c 新特性 - Pluggable Database
在Oracle Database 12c中,可组装式数据库 - Pluggable Database为云计算而生.在12c以前,Oracle数据库是通过Schema来进行用户模式隔离的,现在,可组装式 ...
- 为Oracle GoldenGate准备数据库
了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 ...
随机推荐
- javascript算术运算符详解
算术运算符 +.-.*./.%.++.-- ++.--分为前缀形式和后缀形式 前缀形式先加减1在执行 后缀形式先执行再加减1 注意 +号用来连接两个字符串 只要+连接的操作数中有一个是字符串型,JS就 ...
- 解析excel表格为DataSet
using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System ...
- Lua 栈中元素的位置
Lua与C.C#等的交互是通过栈来实现的,每次插入元素都是放在栈顶(top),至于元素的index,可以使用正数和负数两种方式, 如取栈底开始至第index个元素 -index = gettop - ...
- grub4dos通用菜单及相关工具包
grub4dos通用菜单及相关工具包 全套工具包(含PE.ISO,可根据需要替换删减):http://pan.baidu.com/s/1i4EjWod模板文件3.3M(不含PE.ISO):http:/ ...
- 解析xml报classnotfound错误
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法,dom4j的快速手册里也建议使 用这种方式, 方法是使用Document的selectNodes(String XP ...
- 移动端的touch事件处理
简要的探讨一下移动端 touch 事件处理几个坑,以及相应的简单处理方法. click 穿透 假设有个弹出层,上面有个关闭的按钮支持 touchend 触发后关闭,若正好下方有个元素支持 click ...
- 20145218 《Java程序设计》第01次实验报告
北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.04.08 实验名称:Java开发环境的熟悉(Linux + Eclipse) 实 ...
- fork&exec
进程是系统进行资源分配和调度的基本单位,包括代码.数据和PCB进程控制块等资源. fork函数通过系统调用创建一个与原进程相同的子进程. 在调用进程(父进程)中返回一次,返回子进程ID:在子进程返回0 ...
- placehold.it-在线图片生成器(转载)
做网站的时候 如果 有的产品等客户没有上传图片,可以用这个网站生成的图片 并配以文字进行图片的占位 以免造成页面的空挡或者页面错位等 原文地址:http://www.cnblogs.com/xumen ...
- c# xml的增删改查操作 xmlDocument 的用法
1.将xml转换为DataTable string path = "";//xml的位置StringReader sr = null;XmlTextReader xmlReader ...