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

因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;

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值