任何一门数据库学问都是浩瀚如海的,有很多实际碰到的问题未必与书上知识相一致,更多的还是得靠自己摸索经验,得通过实验再与理论相互验证。就如很多时候在生产环境中碰到无解的问题,往往又因为突发奇想而得到解决,也有可能是本人对数据库知识原理的理解不够透彻
现在对ogg同步过程中出现的一个异常abended进程进行分析,在第一次进行表结构变更初始化的时候,对于EXTRACT进程和REPLICAT进程里面的表名信息因为之前存在就没有进行重新delete和add,随后expdp/impdp导出导入并start进程后,目标端REPLICAT进程就出现了ABENDED现象,通过report发现报错点:
WARNING OGG-01004 Aborted grouped transaction on GX_CSZM_YY, Database error 1403 (No data found).WARNING OGG-01003 Repositioning to rba 3901 in seqno 4.
WARNING OGG-01154 SQL error 1403 mapping GX_CSZM_YY to GX_CSZM_YY No data found.
刚开始以为是操作流程出现错误,然后对照操作流程发现没有问题,然后检查源端和目标端表结构是否已经更新,而生成的trail文件还是旧信息,于是当时想的是把表2先注释,重新start 等待表1先同步完成,后续再把表2取消注释
但是进程又给ABENDED掉了,还是出现OGG-01154和ORA-1403错误,当时看着一百多个小时的同步延迟,我还在想要不要把进程kill重新启动或者单独新建个进程存放这两张表,然后发现在这段时间内源库又新产生了2000多条数据而没有同步到目标查询库,干脆先重新做表同步试一下,直到后续准备启动进程时我突发奇想把REPLICAT进程里面的map table_name,target table_name表名信息删掉重新添加,结果重启进程后同步就正常了,难道是因为数据库虽然重新导入了表结构和数据,但是进程记录的还是旧的表结构信息,所以REPLICAT进程才会获取不到数据吗?
,