OGG_relicat进程丢数据 handlecolisions个人想法

本文探讨了一起OGG进程丢数据的问题,通过分析发现原因是数据库长事务与基于SCN的初始化冲突。解决方案是启用handlecolisions参数,解决了丢失的delete、update和重复主键插入问题。通过调整开始时间成功避免了数据不一致,验证了长事务的影响。
摘要由CSDN通过智能技术生成

  最近接手一套OGG,开发人员抱怨有很多时间点的数据丢失,希望我们排查原因并解决问题。

首先着手了解ogg的功能:确认只开启dml,未开启ddl操作;然手找丢失数据的类型,主要从:

1、stats replicat 进程名字,发现insert、update、delete等dml操作都有操作记录,排除了该OGG不能同步update的猜测;

2、minus对比数据,发现部分表行数一直,但表内容有差别;部分表行数就缺;部分表行数和表内容完全一直。(个人表示萌萌的,毫无规律!)

3、查询丢数据或数据不一致的的时间点,发现时间点比较一致。也就是说都是某一时刻会集中有些insert或是update未能同步;

-----考虑中----

会不会是这样!(灵感突显后的兴奋)

跟源端dba确认,在丢丟数的时间点是否重新初始化过部分表,而且初始化的方式是基于scn的方式。得到的回复是肯定的。 那就明白了。

基于expdp+scn的方式初始化ogg,看似是绝对不会丢数据,但是忽略了数据库长事务问题。倘若做初始化的时刻,因为各种原因源端数据库依然进行着各种事务,并且部分事务是长事务。本来ogg是从在线日志或是归档日志中抽取sql,如果是数据库的长事务ogg处理起来就力不从心了。

找到原因就开始找解决办法了:

两个思路:1、重配,注意scn时刻事务问题,或是直接rman初始化;2,使用handlecolisions参数,配合基于时间点恢复启动replicat进程;

我选择了第二个,原因࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值