Oracle GoldenGate在RAC上部署安裝

kingsql發表於2015-06-23
很多使用者都採用了OGG作為生產環境的災備複製軟體,生產端通常是雙節點的RAC,災備端可能是同樣環境也可能是單例項環境。生產端在安裝OGG時會從儲存上劃分一個獨立的共享磁碟,將其做成檔案系統,然後將OGG軟體和目錄都放在該磁碟上,包括本地trail檔案。下面的實驗我們在虛擬機器上來簡單的建立一個上述災備架構。

環境介紹:
Target
os:Enterprise Linux Enterprise Linux Server release 5.7

oracle 11.2.0.3 RAC 雙節點
192.168.1.191   node1.localdomain       node1
192.168.1.192   node2.localdomain       node2

ogg:11.2.1.0.1

Source
os:Enterprise Linux Enterprise Linux Server release 5.7

oracle 11.2.0.3 單例項
192.168.1.21    oggtarget

ogg:11.2.1.0.1


Source系統設定

為Source端分配磁碟建立OGG,該磁碟為共享型別
劃分磁碟
[root@node1 dev]# fdisk /dev/sdj
格式化磁碟
[root@node1 dev]# mkfs -t ext3 /dev/sdj1
建立掛載點
[root@node1 dev]# mkdir /goldengate
[root@node1 /]# chown oracle:oinstall /goldengate
載入掛載點
[root@node1 dev]# mount /dev/sdj1 /goldengate
開機自動載入
[root@node1 dev]# vi /etc/fstab
/dev/sdj1               /goldengate             ext3    defaults        1 2
解壓縮ogg安裝包
# su - oracle
[oracle@node1 ~]$ cd /goldengate/
[oracle@node1 goldengate]$ unzip /tmp/ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[oracle@node1 goldengate]$ tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar

在bash_profile中新增OGG_HOME
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=node1.localdomain
export ORACLE_SID=devdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_UNQNAME=devdb
export OGG_HOME=/goldengate
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH:$OGG_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'

建立OGG應用目錄
cd $OGG_HOME
[oracle@node1 goldengate]$ ggsci
GGSCI (node1.localdomain) 1> CREATE SUBDIRS

開啟資料庫級別日誌補充
SYS@devdb1 >ALTER DATABASE FORCE LOGGING;
SYS@devdb1 >ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SYS@devdb1 >ALTER SYSTEM ARCHIVE LOG CURRENT;

SYS@devdb1 >col open_mode for a10
SYS@devdb1 >SELECT name,open_mode,force_logging,supplemental_log_data_min FROM v$database;

建立測試使用者
SYS@devdb1 >CREATE USER snow IDENTIFIED BY snow DEFAULT TABLESPACE USERS;
SYS@devdb1 >GRANT CONNECT, RESOURCE TO snow;
SYS@devdb1 >conn snow/snow
SNOW@devdb1 >CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR2(10));

建立OGG管理使用者及其表空間
conn / as sysdba
SYS@devdb1 >select name from v$datafile;
SYS@devdb1 >CREATE TABLESPACE goldengate DATAFILE '+DATA/devdb/datafile/goldengate.dbf' SIZE 100M AUTOEXTEND ON;
SYS@devdb1 >CREATE USER oggadmin IDENTIFIED BY oggadmin DEFAULT TABLESPACE goldengate;
SYS@devdb1 >GRANT dba TO oggadmin;

新增角色
SYS@devdb1 >@/goldengate/role_setup
Enter GoldenGate schema name:oggadmin
GRANT GGS_GGSUSER_ROLE TO oggadmin;

設定全域性引數
ogg global
GGSCI> EDIT PARAMS ./GLOBALS
GGSCHEMA oggadmin

Target系統設定
解壓縮ogg安裝包
cd /u01/app/oracle
mkdir gg
cd gg
unzip /tmp/ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
tar xvf fbo_ggs_Linux_x64_ora11g_64bit.tar

在bash_profile中新增OGG_HOME
vi /home/oracle/.bash_profile
export ORACLE_SID=oggtarget
export ORACLE_BASE=/u01/app/oracle
export OGG_HOME=$ORACLE_BASE/gg
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH:$OGG_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
alias s="sqlplus / as sysdba"
stty erase ^h

建立OGG應用目錄
[oracle@oggtarget ~]$ cd $OGG_HOME
[oracle@oggtarget gg]$ ggsci
GGSCI (oggtarget) 1> CREATE SUBDIRS

建立測試使用者
create user snow identified by snow default tablespace users;
grant connect, resource to snow;
conn snow/snow
create table t1 (id int primary key, name varchar2(20));

建立OGG管理使用者及其表空間
conn / as sysdba
CREATE TABLESPACE goldengate
DATAFILE '/u01/app/oracle/oradata/oggtarget/goldengate01.dbf' SIZE 100m AUTOEXTEND ON;

CREATE USER oggadmin IDENTIFIED BY oggadmin DEFAULT TABLESPACE goldengate;
GRANT dba TO oggadmin;

設定全域性引數
GGSCI> EDIT PARAMS ./GLOBALS
GGSCHEMA oggadmin


Source系統設定
配置管理程式
GGSCI> EDIT PARAM MGR
PORT 7809

開啟表級別日誌補充,追加物件為使用者snow下所有表
DBLOGIN USERID oggadmin,PASSWORD oggadmin
ADD TRANDATA snow.t1

建立初級提取組ex1,源端是雙節點RAC,此處設定引數THREADS 2
ADD EXTRACT ex1,TRANLOG,BEGIN NOW,THREADS 2

為初級提取組ex1指定本地trail檔案
ADD EXTTRAIL /goldengate/dirdat/ex, EXTRACT ex1 MEGABYTES 5

配置初級提取組引數檔案,源端是雙節點RAC,此處設定引數TRANLOGOPTIONS DBLOGREADER
GGSCI> EDIT PARAMS ex1

EXTRACT ex1
USERID oggadmin, PASSWORD oggadmin
TRANLOGOPTIONS DBLOGREADER
EXTTRAIL /goldengate/dirdat/ex
TABLE snow.*;

建立投遞組dp1,設定本地trail檔案
ADD EXTRACT dp1 EXTTRAILSOURCE /goldengate/dirdat/ex

為投遞進組dp1設定target端trail檔案地址
ADD RMTTRAIL /u01/app/oracle/gg/dirdat/rt, EXTRACT dp1

配置投遞組dp1引數檔案
GGSCI> EDIT PARAMS dp1

EXTRACT dp1
USERID oggadmin, PASSWORD oggadmin
RMTHOST 192.168.1.21, MGRPORT 7809
RMTTRAIL /u01/app/oracle/gg/dirdat/rt
TABLE snow.*;

Target系統
配置管理程式
GGSCI> EDIT PARAM MGR
PORT 7809

建立檢查點表
DBLOGIN USERID oggadmin,PASSWORD oggadmin
ADD CHECKPOINTTABLE oggadmin.checkpointtable

在全域性環境中新增檢查點表
EDIT PARAMS ./GLOBALS
GGSCHEMA oggadmin
CHECKPOINTTABLE oggadmin.checkpointtable


建立複製組rt1,設定讀取trail檔案路徑以及檢查點表
ADD REPLICAT rt1, EXTTRAIL /u01/app/oracle/gg/dirdat/rt, checkpointtable oggadmin.checkpointtable

為複製組rt1配置引數檔案
GGSCL> EDIT PARAM rt1

REPLICAT rt1
USERID oggadmin, PASSWORD oggadmin
ASSUMETARGETDEFS
DISCARDFILE /u01/app/oracle/discards.dsc, PURGE
MAP snow.*, TARGET snow.*;

測試環節
啟動source管理程式
GGSCI (node1.localdomain) 1> START MGR

啟動target管理程式
GGSCI (oggtarget) 1> START MGR

啟動source提取程式
GGSCI (node1.localdomain) 2> START EX1

啟動target複製程式
GGSCI (oggtarget) 2> START RT1

啟動source投遞程式
GGSCI (node1.localdomain) 3> START DP1

確認source程式狀態
GGSCI (node1.localdomain) 4> INFO ALL

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     DP1         00:00:00      00:00:08
EXTRACT     RUNNING     EX1         00:00:00      00:00:03

確認target程式狀態
GGSCI (oggtarget) 3> INFO ALL

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     RT1         00:00:00      00:00:02

源端節點node1插入資料
SNOW@devdb1 >insert into t1 values(1,'SNOW’);
SNOW@devdb1 >commit;

源端節點node2插入資料
SNOW@devdb2 >insert into t1 values(2,'LILY');
SNOW@devdb2 >commit;

複製端驗證
SNOW@oggtarget >select * from t1;

        ID NAME
---------- ------------------------------
         1 SNOW
         2 LILY

實驗結束。 

Oracle GoldenGate是一個輕量級軟體,在Oracle資料庫上安裝配置是一種松耦合的狀態,這點非常理想。無論是在單例項環境還是多例項的RAC環境只需要做少量的配置就可以生效,軟體的啟動和關閉也不需要資料庫做任何設定。從安裝的角度來說,比DataGuard要輕便的多。DataGuard是一種“侵入式”配置。需要修改Oracle本身的配置檔案。



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

相關文章