各位同仁,大家好
在下根据业务需求搭建了一个双向同步的OGG,OGG版本是19,数据库版本都是19.3,操作系统是Oracle Linux7.6,经过测试,A节点update可以同步到B节点,B节点update无法同步到A节点,insert和delete因生产原因暂时不方便操作测试,下面是A节点复制进程的discard截图

把唯一索引删了再建主键,然后重新 add trandata试试吧



两边LP960.AGENCY_PROCESS的表结构是否完全一样呢


你好,我将两端表结构截图贴出来,从A节点到B节点是可以同步update的


表结构是一样的。有无可能,B端更新的一条记录,在A端找不到对应的记录。这两个表都没有主键?


两边都info trandata LP960.AGENCY_PROCESS, 把结果贴出来。另外把A端的REPLICAT参数内容贴出来(edit param replicat name)。


第二张INFO TRANDATA 截图里,如下内容: ORACLE GOLDENGATE MARKED FOLLOWING COLUMNS AS KEY COLUMNS: ID, NAME ,DESCRIPTION......明显和第一张截图里不一样啊,第一张里显示KEY COLUMN只有ID。
针对第二张截图对应的表,建立unique index, 然后OGG里运行
deleter trandata LP960.AGENCY_PROCESS
add trandata LP960.AGENCY_PROCESS
info trandata LP960.AGENCY_PROCESS
看是否和第一张一致了,也仅已id为key column。如一致,再试验B端Update, 看A端是否同步。


两边创建表和索引的SQL是一模一样的,索引的状态也是一样的。我现在将B端的唯一索引重新建了以下,然后两边都执行了delete trandata和add trandata,但indo trandata还是有差别


B端表里有无ID为null的记录,如有先处理下,保证ID not null. 或者 alter table add constraint pkxxx primary key on (id);看能否执行成功,要确保能执行成功了,再
deleter trandata LP960.AGENCY_PROCESS
add trandata LP960.AGENCY_PROCESS
info trandata LP960.AGENCY_PROCESS
试试


确认ID列没有NULL,建主键的话是否需要将唯一索引删除,还是直接创建主键。


