星期三, 9月 09, 2015

Oracle goldengate 在同步完成後, 如何線上告訴replicat 停止handlecollisions

1.
GGSCI (linux) 1> send replicat rep1 getlag

Sending GETLAG request to REPLICAT REP2 ...
Last record lag: 28 seconds.
At EOF, no more records to process.

2.
Now remove the HANDLECOLLISIONS online …

GGSCI (linux) 2> send replicat rep1,nohandlecollisions

Sending NOHANDLECOLLISIONS request to REPLICAT REP1 ...
REP1 NOHANDLECOLLISIONS set for 1 tables and 0 wildcard entries

3.edit rep1.prm parameter to remove handlecollisions

P.S.

開衝突參數,就是無視任何衝突。會造成更新沒更新到,主鍵衝突也不更新,或者不能插入就跳過的。所以會掉資料。
handlecollision就是跳過衝突,所以資料衝突也就不會寫到goldengate 的dsc檔案了。如果還繼續寫dsc,容易把dsc撐爆。那你process還是hang住。

ref:
瞭解GoldenGate ReplicatHANDLECOLLISIONS參數
http://www.askmaclean.com/archives/%E4%BA%86%E8%A7%A3goldengate-replicat%E7%9A%84handlecollisions%E5%8F%82%E6%95%B0.html
使用HANDLECOLLISIONS的幾個場景:
1.    target丟失delete記錄(missing delete),忽略該問題並不記錄到discardfile
2.    target丟失update記錄(missing update)
§  更新的鍵值是主鍵= update轉換成INSERT ,預設情況下插入記錄不完整
§  更新的鍵值是非主鍵= 忽略該問題並不記錄到discardfile
3.    重複插入已存在的主鍵值到target表中,這將被replicat轉換為UPDATE現有主鍵值的行的其他非主鍵列
另:該參數僅處理資料本身的Insert/Delete衝突,如果出現兩端映射或其它結構性問題Replicat進程依然會abend,不能被忽略


此外對於主鍵的更新操作,若在target使用HANDLECOLLISIONS且該update丟失,在會轉換為INSERT該主鍵的操作,注意預設情況下插入的記錄不完整,FETCHOPTIONS FETCHPKUPDATECOLS將捕獲完整的redo image鏡像到trail中,這保證把primary key的更新通過HANDLECOLLISIONS轉換為對target的一個完整記錄的插入。

沒有留言:

LinkWithin-相關文件

Related Posts Plugin for WordPress, Blogger...