Golden Gate don't record column's value after being added supplemental log in delete operation (Doc ID 1549316.1)
适用
Oracle GoldenGate - Version 11.1.1.0.0 to 11.1.1.0.0 [Release 11.1.1] Information in this document applies to any platform.
症状
当在某列上执行add trandata之后,该列会被写入trailfile中,但是被发现针对delete语句没有被写入。然后导致了replicat进程abend。
但是当我做update操作之后,是写入了列值的。
在源头和目的端表中均存在PK,源头PK与目的端PK不一样,但是我们在源头数据库中为目的端的pk列添加了补充日志。update操作是成功的,delete操作不成功。
原因
默认情况下,OGG中的delete操作是COMPRESSDELETES,这导致针对delete操作,抽取进程只会将主键值写入trail中。
解决方案
默认情况下,OGG中的delete操作是COMPRESSDELETES,这导致针对delete操作,抽取进程只会将主键值写入trail中。
默认情况下,delete操作是被压缩的,因此抽取进程只会将主键值写入到源头的trail文件中。
但是目的端的replicat进程使用与源头不同的列,因此主键在trailfile中是丢失的。
请在源头抽取进程中使用NOCOMPRESSDELETES参数以覆盖默认值
或者
你可以在map语句中使用KEYCOLS 选项以强制OGG使用指定的列作为Key
注意:我们依然推荐在源头和目的端使用相同的PK
如下摘自reference:
COMPRESSUPDATES 和NOCOMPRESSUPDATES 在参数文件中全局适用于所有的TABLE语句
本参数只适用于如下数据库:
DB2 LUW DB2 z/OS Teradata version 12 or later SQL Server Sybase
本参数不适用于Oracle数据库。