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. ICC_lab总结——ICC_lab1:数据设置和基本流程

    ICC_lab总结 最近在学习后端的流程,做lab是最好不过了.但是有时候做过了lab,过了一段时间之后就会忘记,因此需要自己总结一下,加强印象. ICC_lab1:数据设置和基本流程 数据设置: 一 ...

  2. struct和typedef struct在c语言中的用法

    在c语言中,定义一个结构体要用typedef ,例如下面的示例代码,Stack sq:中的Stack就是struct Stack的别名. 如果没有用到typedef,例如定义 struct test1 ...

  3. IOS百度地图之--->第一篇《环境配置与基本使用》

    Ios 百度地图SDK简易使用说明:http://developer.baidu.com/map/index.php?title=iossdk 先道歉:对于原来上传的Demo我很抱歉,什么都没有,也没 ...

  4. Java语言定义的线程状态分析

    说到线程,一定要谈到线程状态,不同的状态说明线程正处于不同的工作机制下,不同的工作机制下某些动作可能对线程产生不同的影响. Java语言定义了6中状态,而同一时刻,线程有且仅有其中的一种状态.要获取J ...

  5. VM安装centos

    1,centOS下载地址:http://mirrors.163.com/centos/7/isos/x86_64/ 2,VM下载地址:http://rj.baidu.com/soft/detail/1 ...

  6. 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)

    前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...

  7. OS X background process

    Types of Background Process 1. login item 2. xpc service 3. daemon/agent (也可以叫 mach service) 4. star ...

  8. JavaScript定时器分析

    一.事件循环 JavaScript是单线程,同一个时间只能做一件事情,所以执行任务需要排队.如果前一个耗时很长,那么下一个只能等待. 1)两种任务 为了更好的处理任务,JavaScript语言的设计者 ...

  9. .NET Core 2.0及.NET Standard 2.0

    .NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q ...

  10. java 基础知识九 类与对象

    java  基础知识九  类与对象 1.OO(Object–Oriented )面向对象,OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应 ...