在Oracle golden gate中,偶尔会遇到表数据不同步的情况,遇到这种情况,首先是检查表数据库不同步的原因,常见的如网络问题,表结构改变等,查找到不同步的原因,解决方案的最后一步往往是要重新同步数据,大多数情况下只要保证表同步需要的归档日志在,重启抽取和复制进程即可,但有时候部分表重新同步的归档日志可能被删除了,这个时候只需要重新同步这部分表的数据,这个操作可以在线进行。
1 在最初的复制参数中注释掉要重新同步数据的表。
2 停止最初的复制组,并重新启动,如复制组名为repliA
stop replicat repliA;
start replicat repliA
这样注释掉的表就不会再复制。
3 记录下源数据库的时间戳。
4 解决不同步表的长事务。
5 用export工具导出不同步的表
6 复制到目标系统并导入。
7 创建一个新复制组,使用第三部记录的时间戳作为启动参数,使用现在的extracttrail如:
ADD REPLICAT , EXTTRAIL , BEGIN
8 创建新复制组的参数文件,包含处理冲突选项:
EDIT PARAMS repliB
9 启动新复制组
start replica repiB
10 检查新复制组的延迟
send replica repliB ,getlag
显示‘AT EOF,表明没有数据要处理,数据已经同步。
11 关闭新复制组。
stop replica repliB
12 编辑新复制组的参数文件,注释掉冲突处理选项后启动新复制组。
13 停止EXTRACT
14 检查两个复制组的lag,直到显示数据已经同步。
15 编辑初始复制组的参数文件,解除已经同步的表的注释。
17 启动EXTRACT进程,启动成功后再启动初始复制进程。
18 删除新建的复制组
delete replicat repliB。