OGG-01163解决

生产系统上的一套oracle—>mysql的ogg报错:

ERROR   OGG-01163  Oracle GoldenGate Delivery for MySQL, rep15.prm:  Bad column length (220) specified for column CG_SEND_INFO4 in table SHOP88.TB_AG003, maximum allowable length is 200.

很明显,是有人修改了源端表的字段长度,而该ogg未配置ddl同步,导致目标端数据无法插入。

解决方法:
首先想到的是同样修改目标端该字段的长度为500,重启进程,报同样的错。

查看./ogg/dirdef/table.def,发现该表的字段长度仍然为修改之前的值。且源端和目标端都为修改之前的值。

源端使用defgen重新生成表定义文件,并将定义的文件scp到目标机器的.dirdef目录下:
[oracle@lddbd ggs]$ ./ggsci
GGSCI (lddbd) 2> edit params defgen

userid ggs,password ggs
defsfile /u01/app/ggs/dirdef/shop88.def
table shop88.TB_AG003;
table shop88.TB_AG001_BY_DLR_ID;

[oracle@lddbd ggs]$ ./defgen paramfile ./dirprm/defgen.prm
[oracle@lddbd ggs]$ scp ./dirprm/shop88.def 192.168.166.39:/u01/app/ggs/dirdef/


再次重启进程,还是报同样的错。

通过查询发现,虽然源端和目标端该字段的长度已修改,且def文件也都已修改,但生成的trail文件中的meta信息并不会更新。replicat进程默认按照trail文件中的meta信息进行操作。所以还是报错。

GGSCI (hzdb01) 24> edit params REP15

replicat rep15
sourcedefs /u01/app/ogg/dirdef/15table.def OVERRIDE

注意一定添加OVERRIDE选项,新的def内容才能覆盖trail中的meta信息。
启动replication进程恢复正常。

 

你可能感兴趣的:(ogg)