1. 程式人生 > >搭建一個Oracle到Oracle的GoldenGate雙向複製環境

搭建一個Oracle到Oracle的GoldenGate雙向複製環境

目標:搭建一個Oracle到Oracle的Goldengate雙向複製環境(支援DDL+DML)。

環境:

OS:Red Hat Enterprise Linux Server release 5.5 (Tikanga)

DB:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

gg1gg2互為sourcetarget,所處OS和所安DB均一樣。

一、安裝GG

gg1gg2都執行如下操作:

(1)新增環境變數,在/home/oracle/.bash_profile

檔案裡新增如下內容:

export PATH=/u01/ggate:$PATH

exportLD_LIBRARY_PATH=/u01/ggate:$LD_LIBRARY_PATH

export ggtest=/u01/ggate

這裡的GG Oracle 使用的是相同的使用者,所以把GG 的變數加上就可以了。載入剛剛設定的環境變數:

source/home/oracle/.bash_profile

(2)使用ggsci工具,建立必要的目錄

gg1:/u01/ggate> ggsci

--呼叫ggsci 工具

Oracle GoldenGate Command Interpreter forOracle

Version 11.1.1.1OGGCORE_11.1.1_PLATFORMS_110421.2040

Linux, x64, 64bit (optimized), Oracle 11gon Apr 21 2011 22:42:14

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

GGSCI (gg1) 1> create subdirs

--使用ggsci 工具建立目錄

Creating subdirectories under currentdirectory /u01/ggate

Parameter files                /u01/ggate/dirprm: created

Report files                   /u01/ggate/dirrpt: created

Checkpoint files               /u01/ggate/dirchk: created

Process status files           /u01/ggate/dirpcs: created

SQL script files               /u01/ggate/dirsql: created

Database definitions files     /u01/ggate/dirdef: created

Extract data files             /u01/ggate/dirdat: created

Temporary files                /u01/ggate/dirtmp: created

Veridata files                 /u01/ggate/dirver: created

Veridata Lock files            /u01/ggate/dirver/lock: created

Veridata Out-Of-Sync files     /u01/ggate/dirver/oos: created

Veridata Out-Of-Sync XML files/u01/ggate/dirver/oosxml: created

Veridata Parameter files       /u01/ggate/dirver/params: created

Veridata Report files          /u01/ggate/dirver/report: created

Veridata Status files          /u01/ggate/dirver/status: created

Veridata Trace files           /u01/ggate/dirver/trace: created

Stdout files                   /u01/ggate/dirout: created

GGSCI (gg1) 2>

以上就是GG 的安裝,在source target database 都執行。

二、分別配置source和target

(1)GoldenGate通過抓取源端資料庫重做日誌進行分析,將獲取的資料應用到目標端,實現資料同步。因此,源資料庫需要必須處於歸檔模式,並啟用附加日誌和強制日誌。

歸檔模式、附加日誌、強制日誌

--檢視

SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;

LOG_MODE     SUPPLEME FOR

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

ARCHIVELOG  NO       NO

--修改

1archivelog

SQL>shutdown immediate

SQL>startup mount

SQL>alter database archivelog;

SQL>alter database open;

2force logging

SQL>alterdatabase force logging;

3supplemental log data

SQL>alterdatabase add supplemental log data;

(2)禁用Recycle Bin

如果啟用DDL 支援,必須關閉recycle bin。官網的解釋如下:

If the recyclebin is enabled, the Oracle GoldenGate DDL trigger session receives implicitrecycle bin DDL operations that cause the trigger to fail.

Oracle 11g

SQL> alter system set recyclebin=offscope=spfile;

System altered.

如果資料庫是10g,需要關閉recyclebin並重啟;或者手工purge recyclebin

(3)建立存放DDL 資訊的user並賦權

SQL> create user ggtest identified by oracle default tablespace users temporary tablespace temp;

User created.

SQL> grant connect,resource to ggtest;

Grant succeeded.

SQL> grant execute on utl_file to ggtest;

Grant succeeded.

退出所有使用Oracle session,然後使用SYSDBA許可權的使用者執行如下指令碼:

gg1:/u01/ggate> echo $ggate

/u01/ggate

--進入GG的目錄,然後呼叫指令碼:

gg1:/home/oracle> cd $ggate

gg1:/u01/ggate> sqlplus / as sysdba;

SQL*Plus: Release 11.2.0.3.0 Production onTue Nov 8 19:41:58 2011

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise EditionRelease 11.2.0.3.0 - 64bit Production

With the Partitioning, OLAP, Data Miningand Real Application Testing options

--指令碼1

SQL> @marker_setup.sql;

Marker setup script

You will be prompted for the name of aschema for the GoldenGate database objects.

NOTE: The schema must be created prior torunning this script.

NOTE: Stop all DDL replication beforestarting this installation.

--輸入我們之前建立的使用者名稱:

Enter GoldenGate schema name:ggtest

Marker setup table script complete, runningverification script...

Please enter the name of a schema for theGoldenGate database objects:

Setting schema name to ggtest

MARKER TABLE

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

OK

MARKER SEQUENCE

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

OK

Script complete.

--指令碼2

SQL> @ddl_setup.sql;

GoldenGate DDL Replication setup script

Verifying that current user has privilegesto install DDL Replication...

You will be prompted for the name of aschema for the GoldenGate database objects.

NOTE: For an Oracle 10g source, the systemrecycle bin must be disabled. For Oracle 11g and later, it can be enabled.

--注意這裡提示我們在10g裡,必須關閉recycle bin,在11g以後的版本,可以不用關閉。

NOTE: The schema must be created prior torunning this script.

NOTE: Stop all DDL replication beforestarting this installation.

--提示輸入GG的使用者:

Enter GoldenGate schema name:ggtest

You will be prompted for the mode ofinstallation.

To install or reinstall DDL replication,enter INITIALSETUP

To upgrade DDL replication, enter NORMAL

--這裡讓我們選擇安裝模式: install 和 reinstall 選擇INITIALSETUP

Enter mode of installation:INITIALSETUP

Working, please wait ...

Spooling to file ddl_setup_spool.txt

Checking for sessions that are holdinglocks on Oracle Golden Gate metadata tables ...

Check complete.

Using ggtest as a GoldenGate schema name,INITIALSETUP as a mode of installation.

Working, please wait ...

DDL replication setup script complete,running verification script...

Please enter the name of a schema for theGoldenGate database objects:

Setting schema name to ggtest

DDLORA_GETTABLESPACESIZE STATUS:

……

STATUS OF DDL REPLICATION

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

SUCCESSFUL installation of DDL Replicationsoftware components

Script complete.

--指令碼3

SQL> @role_setup.sql;

GGS Role setup script

This script will drop and recreate the roleGGS_GGSUSER_ROLE

To use a different role name, quit thisscript and then edit the params.sql script to change the gg_role parameter tothe preferred name. (Do not run the script.)

You will be prompted for the name of aschema for the GoldenGate database objects.

NOTE: The schema must be created prior torunning this script.

NOTE: Stop all DDL replication beforestarting this installation.

--同樣輸入GG使用者名稱:

Enter GoldenGate schema name:ggtest

Wrote file role_setup_set.txt

PL/SQL procedure successfully completed.

Role setup script complete

Grant this role to each user assigned tothe Extract, GGSCI, and Manager processes, by using the following SQL command:

--這裡提示我們賦權給相關的使用者:

GRANT GGS_GGSUSER_ROLE TO<loggedUser>

where <loggedUser> is the userassigned to the GoldenGate processes.

--指令碼4:賦權

SQL> grant GGS_GGSUSER_ROLE to ggtest;

Grant succeeded.

--指令碼5

SQL> @ddl_enable.sql;

Trigger altered.

注意這裡指令碼建立的table都是使用預設的名稱,當然也可以修改這些table的預設名。 

三、測試

注意:

1目標庫的使用者名稱和物件名稱可以與源端不同,關鍵在於配置檔案中要能夠正確匹配。

2配置源和目標兩端tnsnames,保持互聯互通。(記得啟動lsnrctl

gg1:

SQL> create user ssgg identified by Oracle default tablespace users temporary tablespace temp;

User created.

SQL> grant connect,resource,dba to ssgg;

Grant succeeded. 

gg2:

SQL> create user ttgg identified by oracle default tablespace users temporary 

tablespace temp;

User created.

SQL> grant connect,resource,dba to ttgg;

Grant succeeded.

引數設定

配置gg1,新增checkpoint表:

GGSCI (gg1) 1> dblogin userid ggtest,password oracle

Successfully logged into database.

GGSCI (gg1) 2> view params ./GLOBAL

ggschema ggtest

checkpointtable ggtest.checkpoint

GGSCI (gg1) 27> view params mgr

PORT 7809--指定管理埠

dynamicportlist 7810-7900  --動態埠列表,當指定埠不可用時,管理程序會自動選擇一個可用埠。最大可指定256個埠

autostart er *--mgr開啟時自動開啟所有的extract and replicat process

autorestart er *,retries 5,waitminutes 2 --extract and replicat processes fail mgr automatically start

引數每2分鐘重啟一次,重啟5次後放棄

1、 t o   c o n f i g u r e   t h e   p r i m a r y   e x t r a c t   g o u p             

GGSCI (gg1) 10> add extract ext01,tranlog,begin now               

EXTRACT added.

GGSCI (gg1) 13> add exttrail /u01/ggate/dirdat/sd,extract ext01

EXTTRAIL added.

GGSCI (gg1) 28> view params ext01

extract ext01 --提取程序組的名字

userid ggtest, password oracle --同步使用者

exttrail /u01/ggate/dirdat/sd--trail 檔案目錄和標識(類似於sd*這樣檔案),命名只能是2個字元。

tranlogoptions excludeuser ggtest --避免迴圈複製的出現

DDL INCLUDE ALL

DDLOPTIONS ADDTRANDATA

table ssgg.*; --同步的表或使用者下所有的表

當你需要同步除Goldengate和Oracle資料庫自帶的使用者外所有使用者的DDL操作時,可在源端主抽取程序中加入下面的內容

ddl include all

然後再在目標端Replicat程序引數檔案中加入DDL錯誤的處理語句即可。

2、 t o   c o n f i g u r e   t h e   d a t a   p u m p           

GGSCI (gg1) 19> add extract p01,exttrailsource /u01/ggate/dirdat/sd,begin now

EXTRACT added.

GGSCI (gg1) 20> add rmttrail /u01/ggate/dirdat/pd,extract p01

RMTTRAIL added.

GGSCI (gg1) 29> view params p01

extract p01

userid ggtest,password oracle

rmthost 192.168.50.231,mgrport 7809  --指定遠端IPMGR

rmttrail /u01/ggate/dirdat/pd

table ssgg.*;

3、 t o   c o n f i g u r e   t h e   r e p l i c a t   g r o u p     

GGSCI (gg1) 3> add replicat r02,exttrail /u01/ggate/dirdat/dp,begin now

ERROR: No checkpoint table specified for ADD REPLICAT.

GGSCI (gg1) 4> add replicat r02,exttrail /u01/ggate/dirdat/dp,checkpointtable ggtest.checkpoint

REPLICAT added.

GGSCI (gg1) 30> view params r02

replicat r02

assumetargetdefs --定義目標表和源表使用MAP語法有相同的列結構,當出現熱點時,不檢視源結構而直接從源定義檔案查

userid ggtest,password oracle

DISCARDFILE /u01/ggate/dirdat/sdisc.dsc,append,megabytes 100

DDL INCLUDE MAPPED

DDLERROR DEFAULT IGNORE RETRYOP

map ttgg.*, target ssgg.*;

啟動所有程序:

GGSCI (gg1) 3> start mgr

Manager started.

GGSCI (gg1) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

EXTRACT     RUNNING     EXT01       00:00:00      00:00:07   

EXTRACT     RUNNING     P01         00:00:00      00:00:01   

REPLICAT    RUNNING     R02         00:00:00      00:00:08 

配置gg2,新增checkpoint表:

GGSCI (gg2) 1> dblogin userid ggtest,password oracle

Successfully logged into database.

GGSCI (gg2) 25> view params ./GLOBAL

ggschema ggtest

checkpointtable ggtest.checkpoint

GGSCI (gg2) 29> view params mgr

PORT 7809

dynamicportlist 7810-7900

autostart er *

autorestart er *,retries 5,waitminutes 2

c o n f i g u r a t i o n   f r o m   s e c o u n d a r y   s y s t e m   t o   p r i m a r y   s y s t e m

t o   c o n f i g u r e   t h e   p r i m a r y   e x t r a c t   g r o u p

GGSCI (gg2) 12> add extract ext02,tranlog,begin now

EXTRACT added.

GGSCI (gg2) 13> add exttrail /u01/ggate/dirdat/td,extract ext02

EXTTRAIL added.

GGSCI (gg2) 2