(一)OGG的安裝與配置,並實現單向DML複製操作

翔之天空發表於2015-07-28

實驗目的:在兩臺虛機模擬同平臺同版本上面安裝和配置OGG,並實現簡單的DML複製。

 

實驗環境:64位系統
     作業系統:rhel6.6-x86_64
     資料庫:oracle_11.2-x86-64
     goldengate:for_11g_x64


實驗步驟:
1、
配置源端和目標端ip:
源端:

[root@oggsource ~]# cat /etc/hosts

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.103.106   oggsource.localdomain oggsource

目標端:

[root@oggtarget ~]#cat /etc/hosts

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.103.107   oggtarget.localdomain oggtarget

 

 

2、

 

 

在作業系統中增加goldengate 使用者,便於和oracle使用者區分。

源端:

[root@oggsource ~]# useradd -g oinstall goldengate

 

目標端:

[root@oggtarget ~]# useradd -g oinstall goldengate

 

3、
設定goldengate使用者的環境變數,要注意LD_LIBRARY_PATH一定要設定,如果沒有配置這個路徑的話,在安裝OGG的過程中會報找不到動態連結庫的錯誤。
源端:

[root@oggsource ~]# su - goldengate
[goldengate@oggsource ~]$ vi .bash_profile
export ORACLE_BASE=/u02/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/gg_1
export PATH=$ORACLE_HOME/bin:$PATH
export nls_lang=american_america.zhs16gbk
export ORACLE_SID=oggs
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
[goldengate@oggsource ~]$ source .bash_profile

目標端:

[root@oggtarget ~]# su - goldengate
[goldengate@oggtarget ~]$ vi .bash_profile 
export ORACLE_BASE=/u02/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/gg_1
export PATH=$ORACLE_HOME/bin:$PATH
export nls_lang=american_america.zhs16gbk
export ORACLE_SID=oggt
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
[goldengate@oggtarget ~]$ source.bash_profile 

 

 

3、
源端

 

建立goldengate專用的表空間、schema、並授權。

SQL> create tablespace goldengate datafile '/u01/app/oracle/oradata/oggs/goldengate01.dbf'size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
grant connect,resource to goldengate;
grant dba to goldengate;

 


5、
源端

 

 

檢查資料庫是否在歸檔模式,建議在歸檔模式。

 

SQL> archive log list;

Database log mode              ArchiveMode 
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     19
Next log sequence to archive   21
Current log sequence           21

 

 

 

6、
源端:
設定附加日誌

SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
NO

開啟:

SQL> alter database add supplemental log data;
Database altered.

再次檢視:

SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES

 

 

7、

 

源端:

建立ogg目錄,便於goldengate的管理

[root@oggsource oraclesetup]# cd /home/goldengate
[root@oggsource goldengate]# mkdir ogg

 

 

 

8、

源端:
安裝和配置goldengate。

解壓就是安裝,安裝到/home/goldengate/ogg/目錄下,然後修改目錄許可權。

[root@oggsource ogg]# unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[root@oggsource ogg]# tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
[root@oggsource ogg]# chown -R goldengate:oinstall /home/goldengate/ogg/

 


9、

 

源端:
測試安裝成功,只需進入命令列,就表明安裝是成功的。

[goldengate@oggsource ~]$ cd /home/goldengate/ogg/
[goldengate@oggsource ogg]$ ./ggsci

 
Oracle GoldenGate Command Interpreter forOracle

Version 11.2.1.0.1OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO

Linux, x64, 64bit (optimized), Oracle 11gon Apr 23 2012 08:32:14

 

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

 

GGSCI (oggsource.localdomain) 1> info all

Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    STOPPED

 



10、
在目標端也安裝一遍(重複上面 7、8、9步驟)。

 

[root@oggtarget oraclesetup]# cd /home/goldengate
[root@oggtarget goldengate]# mkdir ogg

[root@oggtarget ogg]# unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[root@oggtarget ogg]# tar -xvf  fbo_ggs_Linux_x64_ora11g_64bit.tar 
[root@oggtarget ogg]# chown -R goldengate:oinstall /home/goldengate/ogg/

[root@oggtarget ~]# su - goldengate
[goldengate@oggtarget ~]$ cd/home/goldengate/ogg/
[goldengate@oggtarget ogg]$ ./ggsci

 
Oracle GoldenGate Command Interpreter forOracle

Version 11.2.1.0.1OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO

Linux, x64, 64bit (optimized), Oracle 11gon Apr 23 2012 08:32:14

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

 

GGSCI (oggtarget.localdomain) 1> info all

Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    STOPPED

 


11、
配置源端和目標端的管理程式。
源端:

 

GGSCI (oggsource.localdomain) 2> create subdirs
GGSCI (oggsource.localdomain) 3> edit params mgr
port 7839 
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

啟動配置的管理程式

GGSCI (oggtsource.localdomain) 4> start mgr   

Manager started.

 

GGSCI (oggtsource.localdomain) 5> info all

Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    RUNNING                                          

 

GGSCI (oggtsource.localdomain) 6> info mgr

Manager is running (IP portoggtsource.localdomain.7839).

 

目標端:

GGSCI (oggtarget.localdomain) 2> create subdirs
GGSCI (oggtarget.localdomain) 3> edit params mgr
port 7839 
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

啟動配置的管理程式

GGSCI (oggtarget.localdomain) 4> start mgr   

Manager started.

 

GGSCI (oggtarget.localdomain) 5> info all

Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    RUNNING                                          

 

GGSCI (oggtarget.localdomain) 6> info mgr

Manager is running (IP portoggtarget.localdomain.7839).

引數分析:

PORT:指定服務監聽埠;這裡以7839為例,預設埠為7809

DYNAMICPORTLIST:動態埠:可以制定最大256個可用埠的動態列表,當指定的埠不可用時,管理程式將會從列表中選擇一個可用的埠,源端和目標段的Collector、Replicat、GGSCI程式通訊也會使用這些埠;

AUTOSTART:指定在管理程式啟動時自動啟動哪些程式;

AUTORESTART:自動重啟引數設定;

PURGEOLDEXTRACTS:定期清理trail檔案設定:本處設定表示對於超過7天的trail檔案進行刪除。

LAGREPORT、LAGINFO、LAGCRITICAL:

定義資料延遲的預警機制:本處設定表示MGR程式每隔1小時檢查EXTRACT的延遲情況,如果超過了30分鐘就把延遲作為資訊記錄到錯誤日誌中,如果延遲超過了45分鐘,則把它作為警告寫到錯誤日誌中。



12、
源端:

測試資料用的是OGG_USER使用者的表資料(OGG_USER使用者下只有T1一個表)。
檢視要複製的表的日誌資訊是完整的,確保是logging。把nologing變成logging。

SQL> alter table ogg_user.t1 logging;

Table altered.

 


13、
源端:
配置ogg_user使用者的表級附加日誌。配置登陸使用者。並檢查日誌是否新增成功。
以goldengate這個schema登陸資料庫。

 

GGSCI (oggsource.localdomain) 7> dblogin userid goldengate,password goldengate

Successfully logged into database.

 

檢視:

GGSCI (oggsource.localdomain) 3> info trandata ogg_user.*

Logging of supplemental redo log data is disabled for table OGG_USER.T1.

注意:發現是disabled,還沒有新增成功,繼續下一步。

新增:

GGSCI (oggsource.localdomain) 12> add trandata ogg_user.*

Logging of supplemental redo data enabled for table OGG_USER.T1.

注意:現在成功了,是enable的。
 


14、

源端:
配置抓取程式。

GGSCI (oggsource.localdomain) 13> add extract ext_demo, tranlog, begin now,threads 1

EXTRACT added.

GGSCI (oggsource.localdomain) 14> info all

Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    RUNNING                                          

EXTRACT    STOPPED     EXT_DEMO    00:00:00      00:00:13

引數分析:

tranlog:表示資料抓取的來源是資料庫的redo資料。
begin now:表示我們在啟動這個抓取程式的就去抓取資料。
threads 1:表示我們資料庫有多少個redo threads。
 


15、

源端:
新增佇列檔案。

GGSCI (oggsource.localdomain) 15> add EXTTRAIL ./dirdat/r1, extract ext_demo,megabytes 100

EXTTRAIL added.

分析:

./dirdat:表示trail檔案的目錄
r1:trail檔案的字首
extract ext_demo:值指定給那個程式用的(ext_demo)。
megabytes 100:檔案大小是100m
 


16、

源端:
編輯我們剛剛配置的抓取程式的引數:

GGSCI (oggsource.localdomain) 16> edit param ext_demo
EXTRACT ext_demo

setenv (ORACLE_SID=oggs)

setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

userid goldengate,password goldengate

REPORTCOUNT EVERY 1 MINUTES, RATE

numfiles 5000

DISCARDFILE./dirrpt/ext_demo.dsc,APPEND,MEGABYTES 1000

DISCARDROLLOVER AT 3:00

exttrail ./dirdat/r1,megabytes 100

dynamicresolution

TRANLOGOPTIONS EXCLUDEUSER goldengate

TRANLOGOPTIONS convertucs2clobs

TABLE OGG_USER.*;

分析:

SETENV:配置系統環境變數

USERID/ PASSWORD:指定OGG連線資料庫的使用者名稱和密碼;

REPORTCOUNT:報告已經處理的記錄條數統計數字;

DISCARDFILE:定義discardfile檔案位置,如果處理中油記錄出錯會寫入到此檔案中;

EXTTRAIL:指定寫入到本地的哪個佇列;

TRANLOGOPTIONS:指定在解析資料庫日誌時所需要的特殊引數,例如:對於裸裝置,可能需要加入以下引數 rawdeviceoggset 0

 

17、

源端:
啟動抓取程式:

GGSCI (oggsource.localdomain) 17>info  all

Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    RUNNING                                          

EXTRACT    STOPPED     EXT_DEMO    00:00:00      00:02:22   

 

GGSCI (oggsource.localdomain) 18> start ext_demo

Sending START request to MANAGER ...

EXTRACT EXT_DEMO starting

 

GGSCI (oggsource.localdomain) 19> info all

Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    RUNNING                                          

EXTRACT    RUNNING     EXT_DEMO   00:00:00      00:00:02   

 


18、

 

源端:
配置datapump程式,將抓取資料傳到目標主機。負責TCPIP通訊。

GGSCI (oggsource.localdomain) 20> add extract dpe_demo, exttrailsource./dirdat/r1

EXTRACT added.

 

輸出:目標主機怎麼寫,也是定義datapumo程式的輸出。

 

GGSCI (oggsource.localdomain) 21> add rmttrail ./dirdat/t1,EXTRACT dpe_demo,MEGABYTES 100

RMTTRAIL added.

分析:
exttrailsource:抓取程式的來源,因為這個程式不否則到資料庫中取抓取,所以抓取的來源
是通過抓取程式已經生成好的trail檔案中的內容。
 


19、

源端:
配置datapump程式引數:

GGSCI (oggsource.localdomain) 22> edit param dpe_demo
extract dpe_demo

dynamicresolution

passthru

rmthost 192.168.103.107, mgrport 7839,compress

rmttrail ./dirdat/t1

numfiles 5000

TABLE OGG_USER.*;




GGSCI (oggsource.localdomain) 23> start dpe_demo

Sending START request to MANAGER ...

EXTRACT DPE_DEMO starting

 

 
GGSCI (oggsource.localdomain) 24> info all
 
Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    RUNNING                                          

EXTRACT    RUNNING     DPE_DEMO    00:00:00      00:00:00   

EXTRACT    RUNNING     EXT_DEMO    00:00:00      00:00:02 

分析:

PASSTHRU:禁止extract程式與資料庫互動,適用於Data Pump傳輸程式;
RMTHOST:指定目標系統及其GoldengateManager程式的埠號,還用於定義是否使用壓縮排行傳輸;

mgrport:目標主機管理程式的埠號,我們上面已經配置了。
compress:在傳輸的過程中啟用壓縮。
RMTTRAIL:指定寫入到目標斷的哪個佇列;
TABLE OGG_USER.*:上面說過,哪些表的redo資訊傳輸。


啟動,如果有問題,狀態不能為running,可以檢視相應的日誌在自己安裝的ogghome目錄下。
日誌所在地:
[goldengate@oggsource ogg]$ vi ggserr.log
 


20、

源端:
測試goldengate能否抓取資料:

SQL> insert into ogg_user.t1 values(3,'c',30);
 

SQL> commit;

Commit complete.

 
SQL> alter system switch logfile;

Systemaltered.


檢視源端是否生成檔案:

 

[root@oggsource ~]# su - goldengate

[goldengate@oggsource ~]$ cd/home/goldengate/ogg/dirdat

[goldengate@oggsource dirdat]$ ll

total 4

-rw-rw-rw- 1 goldengate oinstall 1330 Jul27 16:56 r1000000

 

檢視目標端是否也生成:

 

[root@oggtarget ~]# su - goldengate

[goldengate@oggtarget ~]$ cd /home/goldengate/ogg/dirdat

[goldengate@oggtarget dirdat]$ ll

total 4

-rw-rw-rw- 1 goldengate oinstall 1386 Jul27 16:56 t1000000

 


21、
目標端:
建立golengate軟體使用的schema,並授權一些必要的特殊許可權,注意與源端有所區別,保證我們能DML。

 

create tablespace goldengate datafile '/u01/app/oracle/oradata/oggt/goldengate01.dbf' size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
grant connect,resource to goldengate;
grant dba to goldengate;

 

 


22、
目標端:
為replicat程式建立checkpoint表:

 

 

 

GGSCI (oggtarget.localdomain) 7> dblogin userid goldengate,password goldengate

Successfully logged into database.


GGSCI (oggtarget.localdomain) 8> add checkpointtable goldengate.rep_demo_ckpt

Successfully created checkpoint table goldengate.rep_demo_ckpt.

 



23、

 

目標端:
配置目標端replicate程式:

GGSCI (oggtarget.localdomain) 9> add replicat rep_demo,exttrail./dirdat/t1,checkpointtable goldengate.rep_demo_ckpt

REPLICAT added.

分析:

exttrail:表示這個程式獲取資料的來源是什麼地方,是我們源端rmttrail所設定過的。
 


24、

目標端:
配置目標端replicate引數:

GGSCI (oggtarget.localdomain) 10> edit param rep_demo
REPLICAT rep_demo

SETENV (ORACLE_SID=oggt)

SETENV (NLS_LANG ="AMERICAN_AMERICA.ZHS16GBK")

USERID goldengate,PASSWORD goldengate

REPORTCOUNT EVERY 30 MINUTES, RATE

REPERROR DEFAULT, ABEND

numfiles 5000

--HANDLECOLLISIONS

assumetargetdefs

DISCARDFILE ./dirrpt/rep_demo.dsc, APPEND,MEGABYTES 1000

ALLOWNOOPUPDATES

MAP OGG_USER.*,TARGET OGG_USER.*;

分析:

REPERROR:定義出錯以後程式的響應,一般可以定義為兩種:

ABEND,即一旦出現錯誤即停止複製,此為預設配置;

DISCARD,出現錯誤後繼續複製,只是把錯誤的資料放到discard檔案中。

ASSUMETARGETDEFS:假定兩端資料結構一致使用此引數;
MAP:用於指定源端與目標端表的對映關係;

 


25、
目標端:
啟動並檢視replicate程式是否執行:

GGSCI (oggtarget.localdomain) 11> start rep_demo

Sending START request to MANAGER ...

REPLICAT REP_DEMO starting

 

GGSCI (oggtarget.localdomain) 12> info all

Program    Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER    RUNNING                                          

REPLICAT   RUNNING     REP_DEMO    00:00:00      00:01:59  

 

 

 


26、 測試源端和目標端的資料。

源端:

SQL> update ogg_user.t1 set salary=300 where id=3;

1 row updated.

 

SQL> commit;

Commit complete.

 

SQL> alter system switch logfile;

System altered.

 

SQL> select * from ogg_user.t1;

       ID NAME           SALARY

---------- ---------- ----------

        3 c                 300

        1 a                  10

        2 b                  20

 

目標端:

SQL> select * from ogg_user.t1;

       ID NAME           SALARY

---------- ---------- ----------

        3 c                 300

        1 a                  10

        2 b                  20

 

 

 

27、
測試資料同步,表明已經配置完成goldengate,並實現了單向DML複製。

相關文章