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. 用shell实现linux系统应用文件清理工具

    用shell实现linux系统文件清理工具 1:原始需求 在系统运维中,会产生大量应用备份文件.落地文件等,这些文件需要定时清理.一般来说,都是使用crontab 拉起一个脚本来清理.类似这样: 30 ...

  2. SQL Server跨数据库 增删查改

    比如你在库A ,想查询库B的表.可以用 数据库名.架构名.表名的方式查询 select * from 数据库B.dbo.表1 也可以在存储过程中这样使用. 需要注意的是,如果使用这样的查询方式,你必须 ...

  3. 常见端口、端口查询及TCP状态

    查看电脑端口的开放情况命令:cmd——netstat -a -n -a:显示所有连接和监听端口:-n:以数字形式显示地址和端口号 “本地地址”指本地IP地址及其正在使用的端口号,“外部地址”指连接某端 ...

  4. Android-自定义控件之时针-霞辉

    注释已经比较详细了,废话就不多说了.贴代码了 时针分针秒钟都做上去了,采用的方法也很简单,仔细看一会就能看懂 自定义View类 package com.xh.mytime; import java.u ...

  5. supervisor安装配置

    1.安装 下载:https://codeload.github.com/Supervisor/supervisor/zip/3.1.3 2.安装 .zip cd supervisor- python ...

  6. (转)Zabbix Agent-Windows平台配置指导

      原地址:http://blog.itpub.net/26739940/viewspace-1169538/   zabbix是一个CS结构的监控系统,支持ping,snmp等很多的监控,但是大部分 ...

  7. python混账的编码问题解决之道

    下面的代码作用是修改文件的编码格式.代码很简单,但是也很牛逼(在我看来),这是在segment上找到的解决办法,废话不多说,直接上代码. import codecsdef ReadFile(fileP ...

  8. httpclient源码分析之 PoolingHttpClientConnectionManager 获取连接

    PoolingHttpClientConnectionManager是一个HttpClientConnection的连接池,可以为多线程提供并发请求服务.主要作用就是分配连接,回收连接等.同一个rou ...

  9. Servlet小总结(转)

    一,什么是Servlet? Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat), 是按照Servlet规范编写的一个Java类. 二,Servlet ...

  10. 20155232 2016-2017-3 《Java程序设计》第5周学习总结

    20155232 2016-2017-3 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 异常处理 1.使用try和catch 将正常的流程放try块中,异常处理放catch ...