前天接到一客户电话,说他们的数据库同步报错了,错误信息如下:
ERROR OGG-01163 Bad column length (3) specified for column col81 in table XXX.TT, maximum allowable length is 1.
经询问,得知是由于他们系统升级,有些表增加并修改了部分字段,其中的一个表同步失败,报上面的错误。
我一开始以为是两边(源端与目标端)数据库的表结构不一致,让他们drop掉目标端的表,重新从源端expdp然后impdp到目标端,但故障依旧。
表TT是一个宽表,在系统升级之前有70多个字段,有主键,并且同步一直是正常的,系统升级之后该表有80多个字段了,除了add了几个字段,
也有字段做了modify。在对replicat进程参数做了一些列修改均无改善,错误依旧。
最后我尝试重建此表:
1)使用表TT的DDL语句新建一个表T1,
2)insert into t1 select * from tt;
3)drop table tt;
4)rename t1 to tt;
5)GGSCI> add trandata xxx.tt
经过上面处理后,故障解决!
客户数据库环境:Oracle 11g RAC,Oracle Goldengate 11.1.1.1