一.适用场景
因某种特殊原因导致目标端确定的某个/某几个表的数据和源端不一致,我们需要重新对这些表进行初始化,如果整个schema重新初始化工作量过大的情况。本文章使用的重新初始化的原理参照(OGG Troubleshooting官方文档中out of sycn部分),实现原理为:
1).目标端数据不一致后将不一致的表从原有进程中拆分出来;2).基于SCN对该表单独建立replicat进程进行初始化;3).待到新的rep进程无延迟的时候停掉datapump并确保所有rep进程应用完成;4).因为对于rep进程来说启动时关心的是检查点,所以无延迟后只要两个REP的RBA是一样的,下次启动时就从此处开始处理;5).删除单独的rep并将该表重新添加到原有rep,完成重新初始化
二.实现步骤:
2.1.确认数据同步性
REP进程状态:
GGSCI (node110) 147> info repsrc
REPLICAT REPSRC Last Started 2014-10-10 15:14 Status ABENDED
Checkpoint Lag 00:00:00 (updated 00:00:18 ago)
Log Read Checkpoint File ./dirdat/ ds000006
2014-10-11 12:38:11.000587 RBA 3945148
源端:
SQL> select count(1) from datasrc.test1;
COUNT(1)----------14
目标端:
SQL> select count(1) from datatgttest1;
COUNT(1)----------