Oracle 19C OGG基礎運維-08Error code [942]

chenoracle發表於2020-04-11

Oracle 19C OGG基礎運維-08Error code [942]

問題: 

源端:刪除dept_bak表 

目標端:在資料同步時找不到dept_bak表,程式ABENDING,同步中斷。

錯誤日誌如下:

Fatal error executing DDL replication: error [Error code [942], ORA-00942: table or view does not exist], no error handler present.

目標端詳細日誌如下:

[oracle@cjcos02 ogg]$ tail -f ggserr.log 

2020-04-10T20:48:13.291+0800  INFO    OGG-00484  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  Executing DDL operation.

2020-04-10T20:48:13.919+0800  ERROR   OGG-00519  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  Fatal error executing DDL replication: error [Error code [942], ORA-00942: table or view does not exist], no error handler present.

2020-04-10T20:48:20.064+0800  INFO    OGG-02333  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  Reading /ogg/dirdat/dp000000004, current RBA 10,276, 0 records, m_file_seqno = 4, m_file_rba = 11,586.

2020-04-10T20:48:20.065+0800  ERROR   OGG-01668  Oracle GoldenGate Delivery for Oracle, rep_01.prm:  PROCESS ABENDING.

檢視程式狀態

GGSCI (cjcos02) 16> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

REPLICAT    ABENDED     REP_01      00:03:15      00:22:09   

重啟程式問題依舊存在

GGSCI (cjcos02) 17> stop rep_01

REPLICAT REP_01 is already stopped.

GGSCI (cjcos02) 17> start rep_01

GGSCI (cjcos02) 16> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

REPLICAT    ABENDED     REP_01      00:03:15      00:22:09   

問題原因:

一開始源端extract程式和目標端replicat程式引數檔案中沒有通過*來匹配所有表,而是指定了固定的表。

例如: 

---extract 

TABLE cjcpdb.cjc.emp;

TABLE cjcpdb.cjc.dept;

TABLE cjcpdb.cjc.bonus;

TABLE cjcpdb.cjc.salgrade;

TABLE cjcpdb.cjc.dummy;

---replicat

MAP cjcpdb.cjc.emp, TARGET chenpdb.chen.emp;

MAP cjcpdb.cjc.dept, TARGET chenpdb.chen.dept;

MAP cjcpdb.cjc.bonus, TARGET chenpdb.chen.bonus;

MAP cjcpdb.cjc.salgrade, TARGET chenpdb.chen.salgrade;

MAP cjcpdb.cjc.dummy, TARGET chenpdb.chen.dummy;

再此期間在源端建立了一張測試表dept_bak;

源端: 

create table dept_bak as select * from dept; 

由於之前的配置,這個操作不會同步到目標端。

後來,將源端extract程式和目標端replicat程式引數檔案修改為通過*來匹配使用者下所有表。

例如: 

---extract 

TABLE cjcpdb.cjc.*;

---replicat

MAP cjcpdb.cjc.*, TARGET chenpdb.chen.*;

重啟extract和relicat程式後,發現源端比目標端多了一張測試表dept_bak,

在源端手動刪除這張表,由於目標端沒有這張表,drop命令在同步到目標端時發生錯誤提示找不到表,最終導致目標端恢復程式replicat掛起。

解決方案:目標端修改引數,跳過942錯誤

GGSCI (cjcos02) 19> edit param rep_01

GGSCI (cjcos02) 20> view param rep_01

replicat rep_01

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

userid ogg@chenpdb,password oracle

assumetargetdefs

reperror default,discard

discardfile ./dirrpt/replzl.dsc,append,megabytes 50

DDL INCLUDE MAPPED

DDLOPTIONS REPORT

DDLERROR 942 IGNORE

MAP cjcpdb.cjc.*, TARGET chenpdb.chen.*;

---MAP cjcpdb.cjc.emp, TARGET chenpdb.chen.emp;

---MAP cjcpdb.cjc.dept, TARGET chenpdb.chen.dept;

---MAP cjcpdb.cjc.bonus, TARGET chenpdb.chen.bonus;

---MAP cjcpdb.cjc.salgrade, TARGET chenpdb.chen.salgrade;

---MAP cjcpdb.cjc.dummy, TARGET chenpdb.chen.dummy;

重啟replicat程式後恢復正常

GGSCI (cjcos02) 23> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

REPLICAT    RUNNING     REP_01      00:00:00      00:00:02    

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2685571/,如需轉載,請註明出處,否則將追究法律責任。

相關文章