日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建Goldengate例外句丙记录跟踪Oracle错误

發布時間:2024/8/26 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建Goldengate例外句丙记录跟踪Oracle错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Goldengate沒有例外處理機制,如果復制進程出錯,就會Abend,并Rollbak事務到上一個Checkpoint.這在生產環境中是不理想的做法.
HANDLECOLLISIONS 和 NOHANDLECOLLISIONS 這兩個參數用來控制復制進程是否嘗試解決重復記錄和丟失記錄的錯誤.但是,這類錯誤僅僅是忽略是不行的.
需要有一個記錄,記下有錯誤發生,哪個復制進程出錯,是由什么數據引起的,這可以通過創建例外句柄來記錄下這些信息,但不影響復制進程繼續進行.
步驟
1.創建例外表:
create table ggs_admin.exceptions
( rep_name varchar2(8)
, table_name varchar2(61)
, errno number
, dberrmsg varchar2(4000)
, optype varchar2(20)
, errtype varchar2(20)
, logrba number
, logposition number
, committimestamp timestamp
);

ALTER TABLE ggs_admin.exceptions ADD (?
? CONSTRAINT PK_CTS?
?PRIMARY KEY?
?(logrba, logposition, committimestamp) USING INDEX PCTFREE 0 TABLESPACE MY_INDEXES);

表要創建在Goldengate的管理用戶下,并且能記下所有復制進程的例外數據.

2.編寫復制進程的采納書文件,增加例外處理的宏代碼
[oracle@linuxserver1 ggs]$ ggsci

GGSCI (linuxserver1) 1> edit params RTARGET1

-- This starts the macro
MACRO #exception_handler
BEGIN
, TARGET ggs_admin.exceptions
, COLMAP ( rep_name = "RTARGET1"
, table_name = @GETENV ("GGHEADER", "TABLENAME")
, errno = @GETENV ("LASTERR", "DBERRNUM")
, dberrmsg = @GETENV ("LASTERR", "DBERRMSG")
, optype = @GETENV ("LASTERR", "OPTYPE")
, errtype = @GETENV ("LASTERR", "ERRTYPE")
, logrba = @GETENV ("GGHEADER", "LOGRBA")
, logposition = @GETENV ("GGHEADER", "LOGPOSITION")
, committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"))
, INSERTALLRECORDS
, EXCEPTIONSONLY;
END;
-- This ends the macro
3.在復制進程的參數文件中增家MAP部分,對于每個表增加#exception_handler(),用REPERROR (-1, EXCEPTION)參數說明需要記錄Oracle Error.

REPERROR (DEFAULT, EXCEPTION)
REPERROR (DEFAULT2, ABEND)
REPERROR (-1, EXCEPTION)
MAP SRC.ORDERS, TARGET TGT.ORDERS;
MAP SRC.ORDERS #exception_handler()
MAP SRC.ORDER_ITEMS, TARGET TGT.ORDER_ITEMS;
MAP SRC.ORDER_ITEMS #exception_handler()
MAP SRC.PRODUCTS, TARGET TGT.PRODUCTS;
MAP SRC.PRODUCTS #exception_handler()
REPERROR:控制復制進程在執行MAP語句時如何處理錯誤
DEFAULT:參數設置處理指定的錯誤以外,對錯誤的全局響應
Default2:參數指定要捕獲可能會發生的所有的未想到的Error,并使進程Abend

4.停止并重啟復制進程
GGSCI (linuxserver1) 3> stop REPLICAT RTARGET1
GGSCI (linuxserver1) 4> start replicat RTARGET1

info all

總結

以上是生活随笔為你收集整理的创建Goldengate例外句丙记录跟踪Oracle错误的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。