Oracle GoldenGate中HANDLECOLLISIONS参数使用详解
 
HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用。在 replicat 进程中使用该参数时,即使目标数据库
环境中存在数据完整性问题(如 update、delete 操作遇到缺失行或重复的插入操作),replicat 进程仍然能够继续处理 trail 中的
数据。
 
如果使用了 HANDLECOLLISIONS 参数,则 replicat 进程将按如下方式处理数据:
Missing updates are ignored.
Missing deletes are ignored.
Duplicate inserts are turned into updates.
 
如果要使用 HANDLECOLLISIONS 参数,只需在 replicat 进程参数文件中加入该参数,然后重启 replicat 进程
即可生效。
 
既可以对特定的表使用 HANDLECOLLISIONS 参数,也可全局地使用该参数。
 
使用 send 命令,我们还可以在无需停止 replicat 进程的情况下动态地启用 HANDLECOLLISIONS 参数,命令如下:
 
GGSCI> SEND REPLICAT , HANDLECOLLISIONS [<owner.table_name>]
 
执行如下 send 命令可以查看 HANDLECOLLISIONS 参数是否启用:
SEND REPLICAT , REPORT HANDLECOLLISIONS [<owner.table_name>]
 
Example 1 The following enables HANDLECOLLISIONS for all MAP statements in the parameter file.
HANDLECOLLISIONS
MAP hr.emp, TARGET hr.emp;
MAP hr.job_hist, TARGET hr.job_hist;
MAP hr.dep, TARGET hr.dep;
MAP hr.country, TARGET hr.country;
 
Example 2 The following enables HANDLECOLLISIONS for some MAP statements while disabling it for
others.
HANDLECOLLISIONS
MAP hr.emp, TARGET hr.emp;
MAP hr.job_hist, TARGET hr.job_hist;
NOHANDLECOLLISIONS
MAP hr.dep, TARGET hr.dep;
MAP hr.country, TARGET hr.country;
 
Example 3 The following shows a combination of global and MAP-level use. The MAP specification
overrides the global specification for the specified tables.
HANDLECOLLISIONS
MAP hr.emp, TARGET hr.emp;
MAP hr.job_hist, TARGET hr.job_hist;
MAP hr.dep, TARGET hr.dep, NOHANDLECOLLISIONS;
MAP hr.country, TARGET hr.country, NOHANDLECOLLISIONS;
 
Oracle 不推荐一直启用 HANDLECOLLISIONS 参数,因为这很可能会导致目标数据库的数据不一致。即使遇到数据缺失或重复的情况,
replicat 进程都会继续处理 trail 中的数据。HANDLECOLLISIONS 主要是在进行 initial load 后,源数据库端的应用仍然在运行
而GoldenGate仍在捕获该应用的数据变更的情况下启动 replicat 时使用。当我们出于特定的目的处理一些棘手的问题时,我们需要
回退 trail 文件时,也会用到 HANDLECOLLISIONS 参数。
 
在 GoldenGate 8.0.2.1 及以上版本中,当 replicat 进程停止后,我们可以再 replicat statistics 或 report file 中看到重复
insert 操作的冲突数。
 
HANDLECOLLISIONS 和 KEYCOLS 结合使用
 
如果对没有主键或唯一索引的表进行 DML 操作,即使该表指定了 KEYCOLS,GoldenGate 对这类 DML的处理方式也和对具有主键或唯
一索引的表的处理方式不同,因为 KEYCOLS 并不能直接取代主键,当插入具有相同 KEYCOLS 值的记录时,GoldenGate 对这些记录
的处理并不会产生冲突,HANDLECOLLISIONS 规则并不会对这些记录生效。
 
HANDLECOLLISIONS 和 PKUPDATES 结合使用
 
如果缺失的更新是一个主键更新,则 replicat 将尝试插入该记录而不是忽略该操作。但是当 replicat 尝试插入时,要插入的记录
在 trail 文件中并不是一个完整的映像,要获得该主键更新的完整映像,需要在 extract 进程加入如下参数,并重启 extract 进程
使之生效:
FETCHOPTIONS FETCHPKUPDATECOLS

Oracle GoldenGate中HANDLECOLLISIONS参数使用详解的更多相关文章

  1. Linux(Centos)中tcpdump参数用法详解(转)

    在linux下进行编程开发的人尤其是网络编程的人会经常需要分析数据包,那么一定会用到tcpdump,下面就是关于tcpdump的使用方法说明(1). tcpdump的选项 -a       将网络地址 ...

  2. android animation中的参数interpolator详解

      android:interpolator interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以 accelerated(加速),decelerated(减速), ...

  3. Oracle Statspack报告中各项指标含义详解~~学习性能必看!!!

    Oracle Statspack报告中各项指标含义详解~~学习性能必看!!! Data Buffer Hit Ratio#<#90# 数据块在数据缓冲区中的命中率,通常应该在90%以上,否则考虑 ...

  4. Oracle中的substr()函数 详解及应用

    注:本文来源于<Oracle中的substr()函数 详解及应用> 1)substr函数格式   (俗称:字符截取函数) 格式1: substr(string string, int a, ...

  5. Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

  6. Scala 深入浅出实战经典 第60讲:Scala中隐式参数实战详解以及在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  7. oracle中的dual表详解

    oracle中的dual表详解 1.DUAL表的用途 Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中 --查看当前连接用户 SQL> s ...

  8. MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解

    MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Mycat介绍 1>.什么是Mycat Mycat背后是 ...

  9. oracle数据库定时任务dbms_job的用法详解

    本文来源:Ruthless <oracle数据库定时任务dbms_job的用法详解> 一.dbms_job涉及到的知识点   1.创建job: variable jobno number; ...

随机推荐

  1. javascript继承--原型链的 继承

    作者的话:原型链是JavaScript中相当重要的一个知识点,这里我使用了函数结构图,来帮助我更好的理解 /* 原型链继承方式: 通过改变一个对象的原型对象的指向来继承另一个对象 原理: 我们知道,一 ...

  2. Linux云自动化运维第二课

    一.Linux系统结构 1.Linux是一个倒树结构.Linux中所有的东西都是文件.这些文件都在系统的顶级目录中"/","/"是根目录."/&quo ...

  3. JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  4. background-size IE8兼容方案

    根据canius(http://caniuse.com/#search=background-size),background-size兼容性为IE9以及以上浏览器,如下图所示. 实例代码: < ...

  5. PDCA循环原理

    1.PDCA循环原理:plan  do  check action 以pdca质量环模型为质量控制和保证的理论依据,对软件质量进行把控. plan计划阶段:项目质量规划 1.分析现状,找出质量问题 2 ...

  6. 新手向:Java基础知识

    Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并 ...

  7. fastjson升级版本遇到的问题

    前面的话: 有关阿里的fastjson升级时遇到的问题,链接如下 https://github.com/alibaba/fastjson/wiki/enable_autotype 我要说的,是我碰到这 ...

  8. bzoj3531——树链剖分+动态开点线段树

    3531: [Sdoi2014]旅行 Time Limit: 20 Sec  Memory Limit: 512 MB Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连 ...

  9. Omi新成员omi-router正式发布

    原文链接-https://github.com/AlloyTeam/omi/blob/master/tutorial omi-router omi-router是Omi框架专属的router插件,文件 ...

  10. SPOJ - BITDIFF: Bit Difference [神妙の预处理]

    tags:[数学][预处理]题解:我们用一种巧妙的预处理姿势:记录下每一个数位上分别出现了多少个1.如果第i个数位上出现了cnt[i]个1,那么,在这个数位上产生的"差异值"为:2 ...