1. 程式人生 > >GoldenGate 1403錯誤解決方法

GoldenGate 1403錯誤解決方法

部分 position 3.5 roc 腳本 影像 參數 gate hint

OGG oracle goldengate 1403錯誤解決方法



1. 錯誤描述
WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, repyxb.prm: SQL error 1403 mapping SGPM.P_SMS_SEND to SGPM.P_SMS_SEND.
WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, repyxb.prm: Repositioning to rba 2509817 in seqno 1.
ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, repyxb.prm: Error mapping from SGPM.P_SMS_SEND to SGPM.P_SMS_SEND.
ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, repyxb.prm: PROCESS ABENDING.

2. 錯誤原因和分析
SQL ERROR 1403屬數據錯誤,指記錄無法投遞到目標數據庫,需通過查看錯誤信息及discarded文件,到兩端庫尋找相應記錄,並結合logdump工具分析隊列中的實際數據,分析出現該錯誤的原因,進而解決該問題。
造成該錯誤的可能原因:
兩端表結構不一致
附加日誌錯誤
初始化方法錯誤導致不一致
目標端級聯刪除、trigger沒有被禁止
該表存在不寫日誌的DML操作


3. 處理方法

3.1 兩端表結構不一致
重新初始化該表


3.2 附加日誌錯誤
在源端確認該表附加日誌是否為enable狀態,執行命令:
GGSCI>INFO TRANDATA schema.table_name
如果不是,重新添加附加日誌,執行命令
GGSCI>ADD TRANDATA schema.table_name
加完附加日誌後需要重新對該表執行初始化,具體方法請參照運維方案。

3.3 初始化方法錯誤導致數據不一致
GG在執行刪改操作時,由於初始化方法錯誤造成的數據不一致,使得GG刪除的記錄不存在,或修改的數據前影像不一致。此時,可通過logdump觀察具體錯誤,如果記錄條數不多,則可手動修復該錯誤。如果記錄數非常多,則需對該表進行重新初始化或在replicat進程中添加handlecollisions參數(加handlecollisions參數的前提為該replicat進程復制的表均有主鍵或唯一約束)。

3.4 目標端級聯刪除、trigger沒有被禁止
刪除目標端trigger及主外鍵約束即可。
禁止trigger:

禁止主外鍵約束:

3.5 該表存在不寫日誌的DML操作
當表處於logging狀態且使用了以下數據裝載模式+nologging時DML將不會被寫入數據庫日誌,OGG無法捕獲到:
? /*+ APPEND */ hint
? /*+ BUFFER */ hint
? /*+ PARALLEL */ hint
? SQLLDR with DIRECT=TRUE
請首先檢查表是否處於logging mode,然後從應用方面檢查是否存在這些限制。如果有需要調整表為logging模式,對表執行重新初始化,具體方法請參照運維方案。

3.6 定時任務
觀察數據庫是否存在定時任務自動修改數據。
同樣,對於操作系統級也進行檢查,是否有腳本自動修改數據庫中數據。
如有以上現象,請禁止這些任務,對已經受影響的表執行初始化。

3.7 數據初始化帶來的不一致
如果數據初始化時候沒有使用SCN號做恢復和啟動OGG進程,則可能會丟失部分數據,在日後的運行過程中報告1403錯誤。

3.8 人為修改OGG進程檢查點帶來的數據不一致
如果使用了alter extract/replicat等操作修改過OGG的檢查點,則可能會出現丟失數據或者部分時段數據重復現象,造成運行期間報告1403錯誤。

3.9 人為修改目標端數據
人為失誤修改目標數據也會造成兩端數據不一致。

GoldenGate 1403錯誤解決方法