HANDLECOLLISIONS在官方文档上的说明:

使用HANDLECOLLISIONSNOHANDLECOLLISIONS参数来控制在目标上应用SQL时,Replicat是否尝试解决重复记录和缺少记录的错误。

事实是, HANDLECOLLISIONS 经常被烂用。为了省事,许多运维人员,经常在目标端投递出问题时,直接在目标端进程上配置 HANDLECOLLISIONS,然后进程就会启动并继续执行,但这样做只会掩盖问题,并且随着时间的迁移,问题越积越深,最终发现目标端的数据与源端相差很远。

所以 HANDLECOLLISIONS 根据官方的建议,一般只应该用在初始化阶段的replicat进程。如果在其它时候使用 HANDLECOLLISIONS,这是非常不明智的做法,因为极有可能会造成数据不一致。

如果有这种情况,应该立即停止投递进程并删除HANDLECOLLISIONS参数,然后对源和目标端的数据进行对比后重新同步。

要使用 HANDLECOLLISIONS,还需要在源端进程和表的附加日志上做些工作,包括:

1.HANDLECOLLISIONS 只在有PK或唯一索引的表上有效,如果是没有唯一键的表,则可能造成重复记录。

2.在抽取进程使用LOGALLSUPCOLS参数,并针对表打开全字段附加日志,如果没有这样设置,当 HANDLECOLLISIONS 将update操作转换为insert操作时,可能会报ORA-1403错误。

3.如果表上有LOB字段,且存的内容超过缓冲区域(2 kb或4 kb)的大小,则 HANDLECOLLISIONS 会排除此LOB字段的处理,所以,如果有表包含有lob字段,且长度超过2Kb,则不应该使用 HANDLECOLLISIONS。

所以, HANDLECOLLISIONS 最好是在初始化时使用,且初始化追平之后就应该停止使用。下面基于一个示例来讲解:

如果在下午1点启动抽取进程,2点的时候,在确保没有1点之前开始且到2点还没有结束的事务,此时,使用SourceIsTable进行初始化。在初始化的过程中,系统上一般会有数据变化。

下午3点的时候初始化完成,现在在目标端使用 HANDLECOLLISIONS 参数,启动投递进程。此时,投递进程会从队列文件(增量数据)最开始的地方(1点)开始应用数据到目标端DB,理论上1-2点之间变化的数据在OGG增量数据和初始化数据中都有包含。比如,有人在1:15开始一个事务,1:30才结束,在OGG的extract增量数据及initial load中都会包含这个交易的数据。此时,因为有使用 HANDLECOLLISIONS ,所以replicat会根据冲突处理机制,自动处理这些重复数据,确保目标端数据一致。

一旦目标端replicat进程处理到初始化结束的时间点,即3点,则应该立即使用 SEND REPLICAT NOHANDLECOLLISIONS 去掉自动冲突解决机制,并将 HANDLECOLLISIONS 参数从replicat进程中删除。

GoldenGate HANDLECOLLISIONS参数使用说明的更多相关文章

  1. goldengate的HANDLECOLLISIONS参数

    HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用. 在 replicat 进程中使用该参数时,即使目标数据库环境中存在数据完整性问题(如 ...

  2. Oracle GoldenGate中HANDLECOLLISIONS参数使用详解

    Oracle GoldenGate中HANDLECOLLISIONS参数使用详解   HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用.在 ...

  3. Oracle GoldenGate常用参数

    OGG(Oracle GoldenGate)参数介绍 所有的GoldenGate进程均有参数文件 Manager Extract Replicat Utilities 所有参数均有缺省配置 实际应用只 ...

  4. Linux/Unix 常用参数使用说明

    参数使用说明 ~ 表示当前用户目录 绝对路径 .表示当前目录 绝对路径 | 命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象(下图应用别人的图片) 举例 ps aux | grep & ...

  5. Oracle GoldenGate常用参数详解

    Oracle GoldenGate常用参数详解http://blog.itpub.net/28389881/viewspace-2564461/

  6. goldengate一些参数整理

    转自:http://blog.csdn.net/lemontree1123/article/details/46603549 manager参数: AUTOSTART:指定在mgr启动时自动启动那些进 ...

  7. phpmailer 参数使用说明

    $AltBody--属性 出自:PHPMailer::$AltBody 文件:class.phpmailer.php 说明:该属性的设置是在邮件正文不支持HTML的备用显示 AddAddress--方 ...

  8. udhcpc 参数使用说明

    当没有网络的时候,板子一直发送dhcp请求,导致程序不往下执行,解决的办法是把它切换到后台运行,可是如何切换到后台呢,有办法,它自带参数可以实现该功能.如下: udhcpc -b -i eth0 -p ...

  9. ffmpeg参数使用说明2

    附录一(ffmpeg参数说明): [参数] [说明] [示例] -i "路径" 指定需要转换的文件路径 -i "C:\nba.wmv" -y 覆盖输出文件,即如 ...

随机推荐

  1. Java课后作业之石家庄地铁系统PSP表格20190403

    PSP2.1 Personal Software Process Stages Time Planning 计划 36 hours · Estimate · 估计这个任务需要多少时间 36 hours ...

  2. matplotlib 三维旋转

    # 当elevation=0时,视角为沿x1负方向看,当elevation=90时,视角沿x3负方向看.# 当azimuth=0时,视角为沿x1负方向看,当azimuth=90时,视角沿x2负方向看. ...

  3. stm32通用定时器详解

    在stm32的开发中我们经常会用到定时器,因此在学习stm32的过程中定时器是必须要学的,而定时主要又分为三大类分别为: 高级控制定时器(TIM1与TIM8) 通用定时器(TIM2~TIM5) 基本定 ...

  4. day22:初识面向对象

    1,类可以理解为是一个模子,可以是代码精简,方便增加实例,方便修改,更加规范,能知道具体的属性,方法,但是不知道具体的值 2,对象有具体的值,属性和技能都是根据类规范的 3, 先有类才有对象 4,面向 ...

  5. Windows nessus安装

    1.官网下载nessus,下载速度很慢,要有耐心 2.安装,安装完成后访问https://localhost:8834,最好使用chrome浏览器 3.页面注册,更新plugins等 4.如果页面无法 ...

  6. ASCII Unicode UTF-8 之间的关系

    转载请标明:https://i.cnblogs.com/EditPosts.aspx?opt=1 1. ASCII ASCII 只有127个字符,表示英文字母的大小写.数字和一些符号,但由于其他语言用 ...

  7. GridFS and Geospatial

    GridFS - specification for storing and retrieving large files... images,audio file, video files... F ...

  8. 有几个PAT

    描述 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问一共可以形成多 ...

  9. vue/cli3 配置相对路径

    根目录下新建 vue.config.js 文件 const path = require('path') function resolve(dir){ return path.join(__dirna ...

  10. 上海嘉韦思杯部分writeup

    第二题 打开赛题,看到加密字符串,进行base64解密,发现是JSFUCK,再次解密,控制台得到flag. 第三题 打开频谱图得到flag,flag中有三个_,联想到音频文件详细信息中的三个zero, ...