GoldenGate HANDLECOLLISIONS参数使用说明
HANDLECOLLISIONS在官方文档上的说明:
使用HANDLECOLLISIONS和NOHANDLECOLLISIONS参数来控制在目标上应用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参数使用说明的更多相关文章
- goldengate的HANDLECOLLISIONS参数
HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用. 在 replicat 进程中使用该参数时,即使目标数据库环境中存在数据完整性问题(如 ...
- Oracle GoldenGate中HANDLECOLLISIONS参数使用详解
Oracle GoldenGate中HANDLECOLLISIONS参数使用详解 HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用.在 ...
- Oracle GoldenGate常用参数
OGG(Oracle GoldenGate)参数介绍 所有的GoldenGate进程均有参数文件 Manager Extract Replicat Utilities 所有参数均有缺省配置 实际应用只 ...
- Linux/Unix 常用参数使用说明
参数使用说明 ~ 表示当前用户目录 绝对路径 .表示当前目录 绝对路径 | 命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象(下图应用别人的图片) 举例 ps aux | grep & ...
- Oracle GoldenGate常用参数详解
Oracle GoldenGate常用参数详解http://blog.itpub.net/28389881/viewspace-2564461/
- goldengate一些参数整理
转自:http://blog.csdn.net/lemontree1123/article/details/46603549 manager参数: AUTOSTART:指定在mgr启动时自动启动那些进 ...
- phpmailer 参数使用说明
$AltBody--属性 出自:PHPMailer::$AltBody 文件:class.phpmailer.php 说明:该属性的设置是在邮件正文不支持HTML的备用显示 AddAddress--方 ...
- udhcpc 参数使用说明
当没有网络的时候,板子一直发送dhcp请求,导致程序不往下执行,解决的办法是把它切换到后台运行,可是如何切换到后台呢,有办法,它自带参数可以实现该功能.如下: udhcpc -b -i eth0 -p ...
- ffmpeg参数使用说明2
附录一(ffmpeg参数说明): [参数] [说明] [示例] -i "路径" 指定需要转换的文件路径 -i "C:\nba.wmv" -y 覆盖输出文件,即如 ...
随机推荐
- Java课后作业之石家庄地铁系统PSP表格20190403
PSP2.1 Personal Software Process Stages Time Planning 计划 36 hours · Estimate · 估计这个任务需要多少时间 36 hours ...
- matplotlib 三维旋转
# 当elevation=0时,视角为沿x1负方向看,当elevation=90时,视角沿x3负方向看.# 当azimuth=0时,视角为沿x1负方向看,当azimuth=90时,视角沿x2负方向看. ...
- stm32通用定时器详解
在stm32的开发中我们经常会用到定时器,因此在学习stm32的过程中定时器是必须要学的,而定时主要又分为三大类分别为: 高级控制定时器(TIM1与TIM8) 通用定时器(TIM2~TIM5) 基本定 ...
- day22:初识面向对象
1,类可以理解为是一个模子,可以是代码精简,方便增加实例,方便修改,更加规范,能知道具体的属性,方法,但是不知道具体的值 2,对象有具体的值,属性和技能都是根据类规范的 3, 先有类才有对象 4,面向 ...
- Windows nessus安装
1.官网下载nessus,下载速度很慢,要有耐心 2.安装,安装完成后访问https://localhost:8834,最好使用chrome浏览器 3.页面注册,更新plugins等 4.如果页面无法 ...
- ASCII Unicode UTF-8 之间的关系
转载请标明:https://i.cnblogs.com/EditPosts.aspx?opt=1 1. ASCII ASCII 只有127个字符,表示英文字母的大小写.数字和一些符号,但由于其他语言用 ...
- GridFS and Geospatial
GridFS - specification for storing and retrieving large files... images,audio file, video files... F ...
- 有几个PAT
描述 字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T). 现给定字符串,问一共可以形成多 ...
- vue/cli3 配置相对路径
根目录下新建 vue.config.js 文件 const path = require('path') function resolve(dir){ return path.join(__dirna ...
- 上海嘉韦思杯部分writeup
第二题 打开赛题,看到加密字符串,进行base64解密,发现是JSFUCK,再次解密,控制台得到flag. 第三题 打开频谱图得到flag,flag中有三个_,联想到音频文件详细信息中的三个zero, ...