生產系統上的一套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,發現該表的字段長度仍然爲修改之前的值。且源端和目標端都爲修改之前的值。
修改源端和目標端的def文件中該字段的長度。
再次重啓進程,還是報同樣的錯。
通過查詢發現,雖然源端和目標端該字段的長度已修改,且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進程恢復正常。