這兩天發現了奇怪的問題,就是源端插入一條資料的時候會導致目標端插入兩次,然後導致目標端違反唯一性限制式,進程abended。
報錯如下:
2013-07-29 12:39:41 WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, r33ciq1.prm: SQL error 1 mapping EPCIQ.T_TSQY_GOODS_PASS to EPCIQ.T_TSQY_GOODS_PASS OCIError
ORA-00001: unique constraint (EPCIQ.PK_T_IDEC2_GOODS_LIST_PASS) violated (status = 1), SQL <INSERT INTO "EPCIQ"."T_TSQY_GOODS_PASS" ("ID","LIST_ID","WAREHOUSE_NO","QUANTITY","QUANTITY_UNIT","NET_WEIGHT","WEIGHT_UNIT","CREATE_TIME","UPDATE_DATE","RESERVED1","RESERVED2","RESERVED3","IDEC_HEAD_>.
2013-07-29 12:39:41 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, r33ciq1.prm: Repositioning to rba 112020416 in seqno 409.
2013-07-29 12:39:41 ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, r33ciq1.prm: Error mapping from EPCIQ.T_TSQY_GOODS_PASS to EPCIQ.T_TSQY_GOODS_PASS.
2013-07-29 12:39:41 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, r33ciq1.prm: PROCESS ABENDING.
為了不影響業務,先沒有排查該問題,而是儘快拉起r33ciq1進程,每次都如下操作:
目標端:
- disable主鍵以及唯一性限制式
- 等待資料同步
- 刪除相同資料
- enable主鍵以及唯一性限制式
後經過排查,發現是複製進程出了問題:
GGSCI (dbrac) 4> view param P43CIQ1
extract p43ciq1
rmthost 192.168.131.43, mgrport 7809
rmttrail /ggstrail/rmttrail/ciq/r1
passthru
GETTRUNCATES
dynamicresolution
table CCP.*;
table CIQPARA.*;
table GCC.*;
table IEED.*;
table PMS.*;
table EPCIQ.*;
table UIPEPDECL.*;
table YSBJ.*;
table YSPORTAL.*;
table EPCIQ.*;
該表複製了兩次,所以導致出錯。
停止相關進程,修改該複製進程,重啟進程,問題就解決了。