Oracle Goldengate 雙向同步機制設定 (Oracle to Oracle, 11g)

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someonePrint this page

最近花了點時間研究Goldengate 的雙向同步架構,大致上架構如下圖: 2013-03-18_153142 在Goldengate Director的GUI畫面中大概會長得像下圖這樣子: 2013-03-18_155322  這個Test Case中,有兩台VM Server,分別名為oserv01和oserv02,
DB皆為Oracle 11g R2 (含EM)版本,皆已安裝Goldengate 12.1.0。

OGG專用的同步帳號為OGGUSER並給予DBA(db_owner)權限。
(此帳號不可用於執行其他SQL指令)
因為是設定雙向同步,因此如果執行SQL的帳號如果和OGG登入DB的帳號一樣的話,
就會出現無窮循環,所以設定上OGG的DB帳號必須是專用且獨立的。

雙向同步主機:oserv01(id:DBAA) 與 oserv02(id:DBAB)
資料表:USER_T、ACCOUNT_T
P.S.以下稱oserv01 to oserv02為正向同步,oserv02 to oserv01為逆向同步

以正向順序為例 ( 逆向的做法亦同,只有部分參數改變 )

Step1. 在oserv01新增Extract和Trail

“tranlogoptions excludeuser OGGUSER”
這句是排除OGGUSER所執行的指令,以避免無窮同步循環

編輯時記得逗號後面要加上空白,否則執行時會出現OGG-00212的錯誤
另外OGG的指令後面不需要加分號,加了會執行失敗。
(若要整個Schema同步,Table的部分可以使用 Schema名.* 表示)

※ 逆向同步時oserv02的Extract做法亦同,只要修改目標伺服器和來源表格名即可:

Step 2. 在oserv02新增Replicat

先設定checkpointtable參數:

離開並重新進入GGSCI,登入DB並新增checkpointtable

接著開始建立Replicat,逗號後面不要忘記加空白。
(若要整個Schema同步,Map和Target的部分亦可使用 Schema名.* 表示)

※ 逆向同步時oserv01的Replicat做法亦同,先設定checkpointtable參數

離開並重新進入GGSCI,登入DB並新增checkpointtable

oserv01的Replicat則修改為:

Step 3. 設定並啟動完成後,在來源跟目標主機上查詢執行狀態

如果都是RUNNING就代表設定完成,可以進行SQL的同步測試。

※ 期間可能會遇到的錯誤代碼:

Error 1. OGG-00730 No minimum supplemental logging is enabled ……..
解決方法:
先進入Oracle,查詢是否已開啟最小附加日誌

如果顯示NO, 執行以下命令即可。

Error 2. OGG-00717 Found unsupported in-memory undo record ……..
解決方法:
疑似OGG的Bug;進入GGSCI,重新設定啟動時間即可。

Error 3. INSERT和DELETE皆可正常同步,但執行UPDATE卻同步失效,
紀錄錯誤訊息ORA-01403………..
解決方法:
原因應該是交易紀錄的問題,進入來源端主機的GGSCI後,執行以下命令:

搞定!!

 

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInEmail this to someonePrint this page

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *