Oracle GoldenGate學習總結

君落塵發表於2015-06-04

Oracle GoldenGate學習總結

 

一、Oracle GoldenGate工作原理:

   

   網上有,不再描述,具體參考:

    

    Oracle GoldenGate產品的相關下載地址:

    

   

       GoldenGate幾個重要程式介紹:

1、Manager管理程式在兩端開啟,監控和重啟其他程式;分配資料儲存和報告錯誤及事件;

2、Extract程式從日誌中抓取並傳輸到target端事務資料;

3、Server Collector程式在target(接受)端接受資料並寫入trail檔案;

4、Replicat程式讀取trail檔案,並應用到traget資料庫;

5、trail檔案時gg自己抓捕資訊的檔案,是一個OS檔案,存放在./dirdat/下,以X00000命名,N順序1,2,3…此檔案用完可配置引數自動刪除。

 

二、Oracle GoldenGate配置:

1、同一臺計算上,部署兩個Orcle資料庫,yglis源資料庫,ygtest目標資料庫。分部建立兩個GG環境:

2、將下載的GoldenGate解壓重新命名,建立兩個gg環境的如下:

    注:解壓後的資料夾名稱不能為Oracle GoldenGate會存在衝突。

        源資料配置GG路徑:

        D:\gg\ggs_yglis

        目標資料配置GG路徑:

D:\gg\ggs2_ygtest

3、配置OrateGoldenGate


       >Cd D:\gg\ggs_yglis

       >ggsci

>create subdirs

>exit

 

>D:\gg\ggs2_ygtest

       >ggsci

>create subdirs

>exit

4、檢視源資料庫是否開啟最小附加日誌模式,進入到源資料庫的SQL命令模式:


    Sql> select supplemental_log_data_min from v$database;

    若查詢結果為N,執行下述命令:

    Sql> alter database add supplemental log data;

    Sql> alter system switch log file;

    Sql> exit;

5、配置源資料庫的GoldenGate引數:


    注:配置相關資料前,請先建立測試表。

    gg> ggsci

    gg> edit params ./GLOBALS

    在彈出的檔案中寫入

    MGRSERVNAME mgrtest1

    gg> exit;

6、接著配置windows源資料庫程式


    > install addservice addevents

    配置成功後再次進入到源資料庫的ggsic

    gg> ggsic

    gg> edit params mgr

    在彈出的檔案中輸入

    Port 7809

7、配置一個Extract程式:

    gg> edit param eiextt

    在彈出的檔案中輸入

    --註釋,第一行是Extract的名稱

    --第二三行處理的是中文亂碼問題

    --第四是要匯出的資料庫連線

    --第五行是匯入的trail檔案路徑

    --第六行之後,需要出的表

    EXTRACT EIEXTT

setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

getenv (NLS_LANG)

USERID yglis@ygcms, PASSWORD yglis

EXTTRAIL ./dirdat/tt

TABLE yglis.ldcode123;

TABLE yglis.ldcom;

 

 

上述檔案建立後,需增加Extract程式

gg> add extract eiextt,tranlog,begin now

gg> add exttrail ./dirdat/tt,extract eiextt, megabytes 5   

    8、在源資料庫端增加一個PUMP程式

       gg> edit params epmptt

       在彈出的檔案中輸入:

EXTRACT EPMPTT

PASSTHRU

setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

getenv (NLS_LANG)

RMTHOST localhost,MGRPORT 7841

RMTTRAIL ./dirdat/tt

TABLE yglis.ldcode123;

TABLE yglis.ldcom;

 

 

上述檔案建立後,增加pump程式

gg> add extract epmptt,exttrailsource ./dirdat/tt

gg> add rmttrail ./dirdat/tt,extract epmptt,megabytes 5

 

所有上述配置完成後,源資料庫端配置完成,檢查程式可使用

gg> info all

啟動程式

gg> start mgr

gg> start *

    9、配置目標資料庫端的GoldenGate相關:

       配置manager程式與源資料段一致

       gg> edit params ./GLOBALS

       彈出檔案寫入

       MGRSERVNAME mgrtarget

CHECKPOINTTABLE ygtest.ggschkpt

在退出exit中輸入install addservice addevents


 

再進入到ggsci模式

gg> edit params mgr

在彈出的文字框中寫入

Port 7841

 

gg> add checkpointtable ygtest.ggschkpt

gg> dblogin userid ygtest,password ygtest

gg> add replicat poratt,exttrail ./dirdat/tt,checkpointtable ygtest.ggschkpt

 

配置replicat程式(接受程式)

gg> edit param poratt

在彈出的文字框中寫入

replicat poratt

setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

getenv (NLS_LANG)

userid ygtest@ygtest, password ygtest

assumetargetdefs

reperror default, discard

discardfile ./dirrpt/poratt.dsc, purge

map yglis.ldcode123, target ygtest.ldcode123;

map yglis.ldcom, target ygtest.ldcom;

 

完成上述操作後,檢查程式:

gg> info all

gg> start mgr

gg> start *

 

10、當源、目標端的GG都配置完成,並且所有的程式都RUNNING狀態,說明配置成功,即可驗證

源資料庫端配置

 

目標端配置

 

  

   附加新建的表和測試資料:

  

   附加所有程式檔案:

  

    源端程式配置檔案

   

   

   

    目標端程式配置檔案

  

  

  

 

三、DDL表結構同步情況:

DDL配置可以不用與DML配置同時進行,可以單獨進行,沒有關聯必要性,參考網址:

1、進入到GoldenGate安裝路徑後,使用dba許可權連線資料庫,檢視相關配置是否OK


    確認資料庫歸檔模式:


RECYCLEBIN是否關閉---10G以上版本為了支援DDL複製建議關閉RECYCLEBIN

SQL> show parameter recyclebin;

SQL> alter system set recyclebin=off;

設定完成後,重啟資料庫服務,並重新進入GoldenGate安裝路徑,使用SYSDBA使用者登入並執行下述SQL

    SQL> @marker_setup.sql

    SQL> @ddl_setup.sql

    SQL> @role_setup.sql

    SQL> GRANT GGS_GGSUSER_ROLE to [使用者名稱];

    SQL> @ddl_enable.sql

    SQL> @marker_status.sql

    SQL> exit

2、修改上述二中配置的DML程式eiexttporatt程式,分部增加DDL複製同步的配置語句,具體截圖如下:

修改eiexttporatt程式前先配置管理程式,增加GGSCHEMA使用者如下



以下EiexttPoratt程式配置新增DDL相關。



3、上述所有配置完成後,重啟manager服務,並開啟所有程式,測試修改表結構

alter table ldcode123 add(test varchar(20));

4、檢查另一個環境的表是否同步修改。

 

四、遺留問題:

      

1、目前使用GG在兩個庫之間的同步發現,同步資料中有中文,則出現亂碼,還未解決!

中文亂碼問題解決,在配置的ExtractReplicat程式中增加配置語句:

setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

getenv (NLS_LANG)

      

2、另對於同步程式進行修改的時候,是否需要終止程式?若終止程式,則如何保證資料同步的實時及準確性?

 

3、雙向實時複製同一個表的資料,是否會存在問題?

此問題已經解決,配置方法同Oracle GoldenGate步驟,反向配置源目端的程式,可以實現DML雙向資料同步,但不能解決DDL雙向資料同步。

       附加檔案:

       YGLIS源端配置檔案:

             

       YGTEST目標端配置檔案:

             

 

五、如何解除安裝Oracle GoldenGate產品:

如果想解除安裝源資料庫或目標資料庫不在使用Oracle GoldenGate產品了,且需從當前的windows系統的任務服務中刪除,執行操作步驟:

1、進入源或目標GG配置目錄,輸入以下命令:

    gg> stop *

    gg> stop mgr

2、刪除Oracle GoldenGate安裝路徑

3、執行windows命令,執行sc delete [服務名]


六、Oracle GoldenGate命令引數詳解:

       參考官方文件

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