配置環境:
建議在相同版本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對應的數據庫版本
第二步:指定OGG的運行目錄
其它直接點擊下一步即可。
安裝完畢后,會啟動一個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進程直接將捕捉到的有效數據寫入到遠程隊列,網絡拓撲如下:
不難看出,該方式對網絡要求較高,在實際生產環境中很少使用該種方式。
第二種,首先將數據抽取到本地,然后再由Pump進程傳輸到遠程隊列。網絡拓撲如下:
在這里,我們采用第二種方式
十、在源端上配置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的單向復制環境搭建完畢。