ORACLE的OGG同步OGG-01296:Error mapping问题解决

  • Post author:
  • Post category:其他


因OGG同步运行时,修改了数据库结构后,会报错,以下为我整理的处理方法:

最近正在OGG维护的过程中启动REPLICAT 后报错

WARNING OGG-00869:OCI Error ORA-01400: cannot insert NULL into (“F4ERP”.”BILL_RETAIL”.”P0670_ID”) (status = 1400)

ERROR   OGG-01296:Error mapping from F4ERP.BILL_RETAIL to F4ERP.BILL_RETAIL.

经过度娘分析后,确认为数据表结构的问题,但我的源端和目标端的表结构完全一致(因为是同一个脚本建的),度娘的建议和我处理的方法如下:

一、标准的处理流程

如果发现用户 view report REPLICAT   RPBSS309 中报错的语句 cannot insert NULL into中的字段和目标库不一致,可以使用以下方式

(1)将报错的同步表在源端和目标端都注销掉,将同步表注销掉,并重启进程,既将表结构变化后,将错误同步的数据跳过

edit param REPLICAT RPBSS309

–MAPF4ERP.BILL_RETAIL, TF4ERP.BILL_RETAIL KEYCOLS

edit param EXTRACT doS309

— table PORTAL.SALES_PARTY_EXT;


(2)源端增加表

源端执行

dblogin  USERID ggs, PASSWORD XXX

delete trandata PORTAL.SALES_PARTY_EXT

add trandata PORTAL.SALES_PARTY_EXT

(3)停目标端

目标端增加表

目标端执行

dblogin USERID ogg, password   XXX

delete trandata BSSPDATA.SALES_PARTY_EXT

add trandata BSSPDATA.SALES_PARTY_EXT

起源端

起目标端

二、指定表的主键进行同步

stop  RPBSS309

edit param REPLICAT   RPBSS309

修改为MAP F4ERP.BILL_RETAIL, TF4ERP.BILL_RETAIL KEYCOLS(USER_ID);

start RPBSS309

我的问题仍然没有解决

三、经过分析应该还是出在表结构的问题上,经过核查发现我的源端的 主键建立脚本如下:

alter table SERV_CUSTTYPE_INFO

add primary key (L_SERV_ID, MODIDATA)

tablespace ORDDB_DATA;

而其他正常同步数据表的为

alter table SERV_CUSTTYPE_INFO

add primary key (L_SERV_ID, MODIDATA)

using index

tablespace ORDDB_DATA;

少了一个using index  ,加上using index 后重新建主端和备端的主键后问题解决

alter table SERV_CUSTTYPE_INFO drop primary key;

alter table SERV_CUSTTYPE_INFO

add primary key (L_SERV_ID, MODIDATA)

using index

tablespace ORDDB_DATA;



版权声明:本文为ccpcbear原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。