天天看點

搭建GoldenGate的單向複制環境

配置環境:

搭建GoldenGate的單向複制環境

建議在相同版本OGG(即Oracle GoldenGate)之間進行複制,我在這裡之是以選擇不同版本的OGG,便于後續的比較學習。

一、準備OGG的運作使用者

在這裡,我直接使用oracle使用者作為OGG的運作使用者。

二、确認OGG的安裝目錄

在源端,即Linux環境下,我選擇/u01/app/goldengate作為OGG的安裝目錄,注意:/u01/app/goldengate目錄的屬主必須為OGG的運作使用者,在這裡,該目錄的屬主必須為oracle。

在目标端,即Win環境下,我選擇G:\app\goldengate作為OGG的安裝目錄

三、打開資料庫的歸檔模式

SQL> archive log list 
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     5
Current log sequence           7
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
 
      

四、打開源端資料庫最小附加日志

因為這裡搭建的隻是單向複制,OGG捕捉的是源端資料庫的更改,是以隻需對源端資料庫開啟最小附加日志

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
NO

SQL> alter database add supplemental log data;

Database altered.

SQL> alter system switch logfile;   --切換日志使附加日志生效

System altered.      

五、在資料庫中建立OGG使用者并賦予響應的權限

為了簡化授權,直接将dba角色賦予給gg使用者。

SQL> create user gg identified by gg;
SQL> grant dba to gg;      

六、上傳軟體包到指定目錄,進行安裝

在源端:

[oracle@node1 ~]$ cd /u01/app/goldengate/
[oracle@node1 goldengate]$ ls
ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[oracle@node1 goldengate]$ unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip 
Archive:  ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
  inflating: fbo_ggs_Linux_x64_ora11g_64bit.tar  
  inflating: OGG_WinUnix_Rel_Notes_11.2.1.0.1.pdf  
  inflating: Oracle GoldenGate 11.2.1.0.1 README.txt  
  inflating: Oracle GoldenGate 11.2.1.0.1 README.doc  
[oracle@node1 goldengate]$ tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar       

在目前目錄下,執行ggsci指令

[oracle@node1 goldengate]$ ./ggsci 
./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory      

報以上錯誤,在/home/oracle/.bash_profile添加如下内容:export LD_LIBRARY_PATH=$ORACLE_HOME/lib,添加完畢後,記得使配置檔案生效:source /home/oracle/.bash_profile。

注意:為了ggsci指令在任何目錄下可以執行,可在/home/oracle/.bash_profile設定如下環境變量:

export GG_HOME=/u01/app/goldengate

export PATH=$GG_HOME:$PATH

重新執行ggsci指令

[oracle@node1 goldengate]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.



GGSCI (node1.being.com) 1>       

表示進入成功

在ggsci環境下建立GoldenGate子目錄

[oracle@node1 goldengate]$ ggsci 

GGSCI (node1.being.com) 1> create subdirs

Creating subdirectories under current directory /u01/app/goldengate

Parameter files                /u01/app/goldengate/dirprm: already exists
Report files                   /u01/app/goldengate/dirrpt: created
Checkpoint files               /u01/app/goldengate/dirchk: created
Process status files           /u01/app/goldengate/dirpcs: created
SQL script files               /u01/app/goldengate/dirsql: created
Database definitions files     /u01/app/goldengate/dirdef: created
Extract data files             /u01/app/goldengate/dirdat: created
Temporary files                /u01/app/goldengate/dirtmp: created
Stdout files                   /u01/app/goldengate/dirout: created      

在目标端:即Win8環境下,注意,Win8的OGG版本是12.1.2.1.0,需圖形界面安裝,而11.2.1.0.1則不需要,直接解壓縮即可。

将12.1.2.1.0版本的OGG解壓縮以後,輕按兩下裡面的setup檔案。

第一步:選擇OGG對應的資料庫版本

搭建GoldenGate的單向複制環境

第二步:指定OGG的運作目錄

搭建GoldenGate的單向複制環境

其它直接點選下一步即可。    

安裝完畢後,會啟動一個mgr程序的視窗。

同樣需要在目标端ggsci環境下建立GoldenGate子目錄,因該OGG安裝完畢後,以上目錄均已自動建立,故不再建立。

七、配置Manager程序

在ggsci環境下配置Manager程序

源端配置如下:

[oracle@node1 goldengate]$ ggsci 

GGSCI (node1.being.com) 1> edit param mgr

GGSCI (node1.being.com) 2> start mgr

Manager started.

GGSCI (node1.being.com) 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING         --可見MGR程序已啟動      

目标端同樣如此。

八、在源端上添加表級附加日志

為了驗證搭建的效果,在這裡我們建立一個test使用者,并建立一張test表。

SQL> create user test identified by test;

User created.

SQL> grant connect,resource to test;

Grant succeeded.

SQL> conn test/test
Connected.

SQL> create table test (id number);

Table created.      

在ggsci指令行中登入資料庫,為所有需要複制的表添加trandata 

GGSCI (node1.being.com) 1> dblogin userid gg,password gg
Successfully logged into database.

GGSCI (node1.being.com) 2> add trandata test.*

2015-08-24 18:14:59  WARNING OGG-00869  No unique key is defined for table 'TEST'. All viable columns will be used to represent the key, but may not guarantee uniqueness.  KEYCOLS may be used to define the key.

Logging of supplemental redo data enabled for table TEST.TEST.      

從上面的WARNING我們可以看出,因為test表沒有唯一性限制,故OGG将該行的所有列來作為它的唯一性限制。

九、在源端上添加Extract程序

GGSCI (node1.being.com) 5> add ext exta,tranlog,begin now      

其中,exta為程序名,一般為ext開頭表示是extract程序,後面可以加1-2位字元辨別;

         tranlog表示要抽取資料庫日志;

         begin now表示從目前時間點開始抽取

注意:添加完Extract程序後,我們有兩種方式來傳輸資料。

第一種,exta程序直接将捕捉到的有效資料寫入到遠端隊列,網絡拓撲如下:

搭建GoldenGate的單向複制環境

不難看出,該方式對網絡要求較高,在實際生産環境中很少使用該種方式。

第二種,首先将資料抽取到本地,然後再由Pump程序傳輸到遠端隊列。網絡拓撲如下:

搭建GoldenGate的單向複制環境

在這裡,我們采用第二種方式

十、在源端上配置Pump程序

建立完exta程序後,使用本地隊列時為exta程序配置隊列如下:

GGSCI (node1.being.com) 1> add exttrail /u01/app/goldengate/dirdat/la,ext exta,megabytes 20      

megabytes表示每個隊列檔案的大小,超過該大小則會滾動寫入到下一個隊列檔案。

此時exta複制到了本地,下面來配置Pump程序,負責将資料原封不動的搬運到目标端。

GGSCI (node1.being.com) 3> add extract dpea,exttrailsource /u01/app/goldengate/dirdat/la      

此時exttrailsource指定的是本地隊列的路徑

為該Pump程序配置遠端隊列

GGSCI (node1.being.com) 4> add rmttrail G:\app\goldengate\dirdat\ra,ext dpea,megabytes 20      

rmttrail為目标隊列的位置,隊列一般由路徑加上兩個辨別如ra來表示。

十一、在源端配置Extract程序參數

GGSCI (node1.being.com) 6> edit param exta      

内容如下:

EXTRACT exta
setenv ( NLS_LANG = AMERICAN_AMERICA.AL32UTF8 )
setenv ( ORACLE_SID = orcl )
USERID gg, PASSWORD gg
EXTTRAIL /u01/app/goldengate/dirdat/la
dynamicresolution
table test.*;      

啟動exta程序,看其能否正常啟動

GGSCI (node1.being.com) 15> start exta

Sending START request to MANAGER ...
EXTRACT EXTA starting

GGSCI (node1.being.com) 17> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     DPEA        00:00:00      00:27:12    
EXTRACT     RUNNING     EXTA        00:55:27      00:00:07        

注意:正常情況下,exta程序啟動後的status是running,如果依舊是stopped,可通過view report exta檢視exta啟動異常的原因。

PS:第一次配置後,啟動異常,後來通過view report exta指令檢視其報錯資訊:ERROR   OGG-00396  Command not terminated by semi-colon,才知道table test.*參數後沒有加分号。添加完畢後,重新啟動,啟動正常。

十二、在源端配置Pump程序參數

GGSCI (node1.being.com) 19> edit param dpea      
extract dpea
setenv ( NLS_LANG = AMERICAN_AMERICA.AL32UTF8 )
passthru
rmthost 192.168.2.1,mgrport 7809, compress
rmttrail G:\app\goldengate\dirdat\ra
dynamicresolution
table test.*;      

其中rmthost指定目标端的主機IP和端口,rmttrail指定遠端隊列的路徑,passthru表示本程序是一個Pump程序,不需要跟資料庫互動。

啟動檢視狀态

GGSCI (node1.being.com) 20> start dpea

Sending START request to MANAGER ...
EXTRACT DPEA starting

GGSCI (node1.being.com) 21> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     DPEA        00:00:00      00:42:42    
EXTRACT     RUNNING     EXTA        00:00:00      00:00:04       

啟動OK。

十三、在目标端上初始化目标表

可以通過exp/imp、RMAN、init load進行資料初始化

如果目标端不需要曆史資料,可以隻建立表結構

在這裡,同源端一樣,在目标端建立一個test使用者,并建立一張test表。

十四、在目标端添加Replicat程序

GGSCI (Lenovo-PC) 5> add rep repa,exttrail G:\app\goldengate\dirdat\ra,nodbcheckpoint
REPLICAT added.      

十五、配置Replicat程序參數

GGSCI (Lenovo-PC) 7> edit param repa      
replicat repa
setenv (NLS_LANG = 'AMERICAN_AMERICA.ZHS16GBK')
setenv (ORACLE_SID = test)
userid gg, password gg
reperror default,abend
discardfile G:\app\goldengate\dirrpt\repa.dsc,append, megabytes 10
assumetargetdefs
dynamicresolution
map test.*, target test.*;      

啟動Replicat程序

GGSCI (Lenovo-PC) 25> start repa

Sending START request to MANAGER ...
REPLICAT REPA starting

GGSCI (Lenovo-PC) 26> info all  

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    ABENDED     REPA        00:00:00      01:45:47         

發現REPA程序的狀态是ABENDED,通過view report exta指令檢視其報錯資訊:

2015-08-24 14:39:21 ERROR OGG-02091 Operation not supported because enable_goldengate_replication is not set to true.      

在目标資料庫中将enable_goldengate_replication的值設為true

SQL> alter system set enable_goldengate_replication=true;

系統已更改。      

重新啟動Replicat程序,狀态OK

GGSCI (Lenovo-PC) 29> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     REPA        00:00:00      00:00:08      

至此,各程序均已正常啟動,下面,通過對源端test表進行增删改,看其目标端的變化

源端新增一條資料

SQL> insert into test values(1);

1 row created.

SQL> commit;

Commit complete.      

目标端的結果如下:

SQL> select * from test;

        ID
----------
         1      

對源端進行删、改,變化同樣發生在目标端中。

也可通過檢視各程序的狀态來檢視複制的情況

GGSCI (node1.being.com) 31> stats exta

Sending STATS request to EXTRACT EXTA ...

Start of Statistics at 2015-08-24 23:23:49.

Output to /u01/app/goldengate/dirdat/la:

Extracting from TEST.TEST to TEST.TEST:

*** Total statistics since 2015-08-24 23:15:07 ***
    Total inserts                                  1.00
    Total updates                                  1.00
    Total deletes                                  1.00
    Total discards                                 0.00
    Total operations                               3.00

*** Daily statistics since 2015-08-24 23:15:07 ***
    Total inserts                                  1.00
    Total updates                                  1.00
    Total deletes                                  1.00
    Total discards                                 0.00
    Total operations                               3.00

*** Hourly statistics since 2015-08-24 23:15:07 ***
    Total inserts                                  1.00
    Total updates                                  1.00
    Total deletes                                  1.00
    Total discards                                 0.00
    Total operations                               3.00

*** Latest statistics since 2015-08-24 23:15:07 ***
    Total inserts                                  1.00
    Total updates                                  1.00
    Total deletes                                  1.00
    Total discards                                 0.00
    Total operations                               3.00

End of Statistics.


GGSCI (node1.being.com) 32> stats dpea

Sending STATS request to EXTRACT DPEA ...

Start of Statistics at 2015-08-24 23:23:54.

Output to G:\app\goldengate\dirdat\ra:

Extracting from TEST.TEST to TEST.TEST:

*** Total statistics since 2015-08-24 23:15:08 ***
    Total inserts                                  1.00
    Total updates                                  1.00
    Total deletes                                  1.00
    Total discards                                 0.00
    Total operations                               3.00

*** Daily statistics since 2015-08-24 23:15:08 ***
    Total inserts                                  1.00
    Total updates                                  1.00
    Total deletes                                  1.00
    Total discards                                 0.00
    Total operations                               3.00

*** Hourly statistics since 2015-08-24 23:15:08 ***
    Total inserts                                  1.00
    Total updates                                  1.00
    Total deletes                                  1.00
    Total discards                                 0.00
    Total operations                               3.00

*** Latest statistics since 2015-08-24 23:15:08 ***
    Total inserts                                  1.00
    Total updates                                  1.00
    Total deletes                                  1.00
    Total discards                                 0.00
    Total operations                               3.00

End of Statistics.      
GGSCI (Lenovo-PC) 30> stats repa

Sending STATS request to REPLICAT REPA ...

Start of Statistics at 2015-08-24 15:24:34.

Replicating from TEST.TEST to TEST.TEST:

*** Total statistics since 2015-08-24 15:15:14 ***
        Total inserts                                      1.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total discards                                     0.00
        Total operations                                   3.00

*** Daily statistics since 2015-08-24 15:15:14 ***
        Total inserts                                      1.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total discards                                     0.00
        Total operations                                   3.00

*** Hourly statistics since 2015-08-24 15:15:14 ***
        Total inserts                                      1.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total discards                                     0.00
        Total operations                                   3.00

*** Latest statistics since 2015-08-24 15:15:14 ***
        Total inserts                                      1.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total discards                                     0.00
        Total operations                                   3.00

End of Statistics.      

至此,基于GoldenGate的單向複制環境搭建完畢。

繼續閱讀