系统环境
oracle11.2.0.4单机+OGG12.2.0.1
报错信息
研发人员在源库上调整了表中字段长度,同时在备库也调整了,但OGG数据同步报错了,报错信息如下:
2021-01-20 18:15:36 ERROR OGG-01163 Oracle GoldenGate Delivery for Oracle, Bad column length (58) specified for column NODENAME in table test maximum allowable length is 42
故障分析与处理
1、之前处理过该错误,以为是表中字段不一致或长度不一致导致的,结果都不是
2、应该是OGG从源库抽取数据的时带了表的定义导致,搜索了一下网上的很多答案,在此记录一下处理过程
处理过程
1、在源库生成同步出问题的业务表的表结构
[oracle@db-2 dirdef/]$ vi /tables.def
USERID AA PASSWORD AA2016
DEFSFILE /home/gk5/ogg_12/dirdef/tables.def
TABLE GK.TEST;
TABLE GK.TEST2;
[oracle@yjgk-db-2 ogg_12]$ ./defgen paramfile dirprm/defgen
2、将表定义文件拷贝的目标库dirdef目录下
[oracle@yjgk-db-2 ogg_12]$ scp /home/gk5/ogg_12/dirdef/tables.def xx.xx.xx.29:/home/oracle/ogg_12/dirdef
3、在目标库上相应的复制进程中添加如下内容,如果有assumetargetdefs参数需注释掉
SOURCEDEFS ./dirdef/tables.def OVERRIDE
4、启动相应的OGG复制进程即可。
总结与思考
1、需要在源库上生成的表的定义
2、这是OGG12.2.0.1的bug?其他版本有这个问题吗?
3、先在备库上调整字段长度,后在主库调整是否有该问题?
4、主库的表结构发生了变化,是否可以直接同步的备库上去,而不用手动处理?
5、从业务层面是否可以只获取DML语句?