GoldenGate 配置文件,裡面有引數說明

darren__chan發表於2014-12-29


2       單機-單機複製配置

2.1  環境簡介

性質

IP

系統

ORACLE版本

源端

10.122.0.110

AIX 5.3

10.2.0.1

目標端

10.122.0.113

WINDOWS 2003

10.2.0.1

 

2.2  源端安裝GoldenGate

建立GoldenGate安裝目錄並解壓安裝檔案

unzip ogg112101_ggs_AIX_ppc_ora10.2_64bit.zip

tar –xf ggs_AIX_ppc_ora10.2_64bit.tar

注意:使用的安裝包一定要與平臺一致

 

設定環境變數

在使用者引數檔案中新增以下內容:

export GGATE_HOME=/u01/oracle/oracle/ogg

export LIBPATH=$GGATE_HOME:$ORACLE_HOME/lib

注意:新增後需使引數檔案生效

HPLINUX平臺下用LD_LIBRARY_PATH替換LIBPATH

 

安裝GoldenGate

進入OGG控制檯建立OGG工作目錄

然後在安裝目錄下執行 ./ggsci  進入OGG控制檯

執行命令 createsubdirs建立工作目錄,顯示如下:

GGSCI (NDSCDB1)1> create subdirs


2.3 目標端安裝GoldenGate


2.4  配置源端資料庫

資料庫模式配置

源端資料庫必須開啟歸檔模式

Alter databasearchivelog;

開啟最小附加日誌

Alter databaseadd supplemental log data;

使用SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

可檢視是否開啟了最小附加日誌;

 

源端資料庫建立GoldenGate資料庫使用者並授權:(我們這裡以ogg為例,使用其他亦可)

create user ogg identified by oracle defaulttablespace DATA_OL;

grant connect,resource,unlimited tablespace to ogg;

grant executeon utl_file to ogg;

grant select any dictionary,select any table to ogg;

grant alter any table to ogg;

grant flashback any table to ogg;

grant execute onDBMS_FLASHBACK to ogg;

新增表級transdata

GGSCI (NDSCDB1) 2>dblogin userid ogg,password oracle

Successfully logged intodatabase.

GGSCI(NDSCDB1) 3> add trandata olive.ol$_objects

Logging of supplemental redo dataenabled for table OLIVE.OL$_OBJECTS.

 

2.5  配置源端程式組

配置管理程式mgr:

GGSCI(NDSCDB1) 1> edit param mgr

(貼上下面這段配置)

PORT 7839

DYNAMICPORTLIST 7840-7939

--AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES5,WAITMINUTES 3

PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

MANAGER程式引數配置說明:

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

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

COMMENT:註釋行,也可以用--來代替;

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

AUTORESTART:自動重啟引數設定:本處設定表示每3分鐘嘗試重新啟動所有EXTRACT程式,共嘗試5次;

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

LAGREPORT、LAGINFO、LAGCRITICAL:

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

 

啟動管理程式:

GGSCI(NDSCDB1) 2> start mgr

配置抽取程式:

GGSCI(NDSCDB1) 12> add extract extnd,tranlog,begin now

GGSCI(NDSCDB1) 14> add exttrail ./dirdat/nd,extract extnd,megabytes 100

EXTTRAILadded.

Megabytes:指定佇列大小,本處設定表示100M

GGSCI(NDSCDB1) 15> edit params extnd

(貼上下面這段配置)

EXTRACTextnd

setenv(NLS_LANG = "AMERICAN_AMERICA.UTF8")

SETENV(ORACLE_HOME = "/u01/oracle/oracle/product/10.2.0/db_1")

SETENV(ORACLE_SID = "ndtest")

USERIDogg, PASSWORD oracle

--GETTRUNCATES

REPORTCOUNTEVERY 1 MINUTES, RATE

DISCARDFILE./dirrpt/extnd.dsc,APPEND,MEGABYTES 1024

--THREADOPTIONS  MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS60000

DBOPTIONS  ALLOWUNUSEDCOLUMN

WARNLONGTRANS2h,CHECKINTERVAL 3m

EXTTRAIL./dirdat/nd

--TRANLOGOPTIONSEXCLUDEUSER USERNAME

FETCHOPTIONSNOUSESNAPSHOT

TRANLOGOPTIONS  CONVERTUCS2CLOBS

TABLEolive.ol$_objects

 

新增傳輸程式,配置引數

GGSCI(NDSCDB1) 2> add extract dpend,exttrailsource ./dirdat/nd

GGSCI(NDSCDB1) 3> add rmttrail F:\ogg\dirdat\nd, EXTRACT DPEND

 

GGSCI(NDSCDB1) 4> edit params dpend

(貼上下面這段配置)

EXTRACTdpend

SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")

USERIDogg, PASSWORD oracle

PASSTHRU

RMTHOST10.122.0.113, MGRPORT 7839, compress

RMTTRAILF:\ogg\dirdat\nd

TABLEolive.ol$_objects;

 

抽取程式和傳輸程式其實都是EXTRACT程式,也可以配置在一個程式完成這兩個功能,但是當網路傳輸有問題時,這樣抽取也就不能繼續執行了,所以推薦分開配置為兩個程式;

EXTRACT程式引數配置說明:

SETENV:配置系統環境變數

USERID/ PASSWORD:指定OGG連線資料庫的使用者名稱和密碼,這裡使用3.4部分中建立的資料庫使用者OGG;

COMMENT:註釋行,也可以用--來代替;

TABLE:定義需複製的表,後面需以;結尾

TABLEEXCLUDE:定義需要排除的表,如果在TABLE引數中使用了萬用字元,可以使用該引數指定排除掉得表。

GETUPDATEAFTERS|IGNOREUPDATEAFTERS:

是否在佇列中寫入後影像,預設複製

GETUPDATEBEFORES| IGNOREUPDATEBEFORES:

是否在佇列中寫入前影像,預設不復制

GETUPDATES|IGNOREUPDATES:

是否複製UPDATE操作,預設複製

GETDELETES|IGNOREDELETES:

是否複製DELETE操作,預設複製

GETINSERTS|IGNOREINSERTS:

是否複製INSERT操作,預設複製

GETTRUNCATES|IGNORETRUNDATES:

是否複製TRUNCATE操作,預設不復制;

RMTHOST:指定目標系統及其GoldengateManager程式的埠號,還用於定義是否使用壓縮排行傳輸,本例中的compress為壓縮傳輸;

RMTTRAIL:指定寫入到目標斷的哪個佇列;

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

SQLEXEC:extract程式執行時首先執行一個SQL語句;

PASSTHRU:禁止extract程式與資料庫互動,適用於Data Pump傳輸程式;

REPORT:定義自動定時報告;

STATOPTIONS:定義每次使用stat時統計數字是否需要重置;

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

TLTRACE:開啟對於資料庫日誌的跟蹤日誌;

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

DBOPTIONS:指定對於某種特定資料庫所需要的特殊引數;

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

WARNLONGTRANS:指定對於超過一定時間的長交易可以在gsserr.log裡面寫入警告資訊,本處配置為每隔3分鐘檢查一次場交易,對於超過2小時的進行警告;

 

2.6  配置目標資料庫

目標庫建立GoldenGate資料庫使用者並授權:

createuser ogg identified by oracle default tablespace DATA_OL;

grantconnect,resource,unlimited tablespace to ogg;

grantexecute on utl_file to ogg;

grantselect any dictionary,select any table to ogg;

grantalter any table to ogg;

grantflashback any table to ogg;

grantexecute on DBMS_FLASHBACK to ogg;

grantinsert any table to ogg;

grantdelete any table to ogg;

grantupdate any table to ogg;

 

新增checkpoint表

然後在引數檔案中輸入

GGSCHEMAogg

CHECKPOINTTABLEogg.checkpoint

 

2.7 配置目標端程式組

配置管理程式

 

配置複製程式

REPLICAT程式引數配置說明:

ASSUMETARGETDEFS:假定兩端資料結構一致使用此引數;

SOURCEDEFS:假定兩端資料結構不一致,使用此引數指定源端的資料結構定義檔案,該檔案需要由GlodenGate工具產生。

MAP:用於指定源端與目標端表的對映關係;

MAPEXCLUDE:用於使用在MAP中使用*匹配時排除掉指定的表;

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

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

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

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

SQLEXEC:在程式執行時首先執行一個SQL語句;

GROUPTRANSOPS:將小交易合併成一個大的交易進行提交,減少提交次數,降低系統IO消耗。

MAXTRANSOPS:將大交易拆分,每XX條記錄提交一次。

 

2.8 啟動程式進行資料同步

啟動源端程式組

啟動抽取程式和傳輸程式:

start extnd

start dpend

啟動目標端程式

start repnd

顯示如下:

到此OGG的安裝配置就完成了,可以進行資料同步測試了。

 

3       RAC-單機複製配置

3.1  環境簡介

性質

IP

系統

ORACLE版本

源端

10.123.112.201/10.123.112.202

LINUX rhel5 64位

10.2.0.1

目標端

10.123.112.235

LINUX rhel5 32位

10.2.0.1

 

3.2 源端安裝OCFS2叢集檔案系統

RAC環境中為了實現高可用性,需將OGG安裝在叢集檔案系統中,這樣OGG可以訪問RAC中的所有節點,我們這裡測試採用OCFS2檔案系統。

從下載與LINUX核心相符的OCFS2 RPM包

LINUX下執行uname –r檢視系統核心版本 eg:

[oracle@node2ocfs]$ uname -r

2.6.18-92.el5

 

使用ROOT使用者安裝OCFS2的RPM包

[root@node1ocfs]# rpm -ivh ocfs2-tools-1.2.7-1.el5.x86_64.rpm \

ocfs2console-1.2.7-1.el5.x86_64.rpm\

ocfs2-2.6.18-92.el5-1.2.9-1.el5.x86_64.rpm

進入OCFS2控制檯介面

[root@node1 ~]#ocfs2console

在出現的窗體中選擇[Clucster]-[ConfigureNodes]在"NodeConfiguration"對話方塊中,輸入2個專用互連的節點名、IP 地址、埠號後,選擇 [Clucster]-[PropagateCluster Configuration] ,提示"Finished"。

配置後的資訊顯示如下:

在叢集中的所有節點上以 root 使用者帳戶的身份執行以下命令
    export PATH=$PATH:/sbin:/usr/sbin
    /etc/init.d/o2cb enable

建立ocfs2檔案系統,其中-N選項用於指明最多允許多少個節點同時使用此檔案系統:

# mkfs -t ocfs2-N 2 /dev/sdh1

掛載分割槽:

# mount /dev/sdh1/ggate

 

配置啟動自動載入(所有節點):
    export PATH=$PATH:/sbin:/usr/sbin
    chkconfig --add o2cb
    /etc/init.d/o2cb configure
 在/etc/rc.local增加入下內容:       

chown -Roracle:dba /ggate
chmod -R 775 /ggate

 

3.3 源端安裝GoldenGate

在GoldenGate安裝目錄(OCFS2目錄/ggate)解壓安裝檔案

unzipogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip

tar–xvf fbo_ggs_Linux_x64_ora10g_64bit.tar

 

設定環境變數

在使用者引數檔案中新增以下內容:

exportGGATE_HOME=/ggate

exportLD_LIBRARY_PATH=$GGATE_HOME:$ORACLE_HOME/lib

注意:新增後需使引數檔案生效

 

安裝GoldenGate

進入OGG控制檯建立OGG工作目錄

然後在安裝目錄下執行 ./ggsci  進入OGG控制檯

執行命令 createsubdirs建立工作目錄,顯示如下:

GGSCI(node1) 1> create subdirs


3.4 目標端安裝GoldenGate

環境相同,安裝方法與4.3一致,僅僅是安裝位置不同,安裝過程略,注意安裝包與平臺一致。

3.5 配置源端資料庫

資料庫模式配置

源端資料庫必須開啟歸檔模式

Alterdatabase archivelog;

開啟最小附加日誌

Alterdatabase add supplemental log data;

使用SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

可檢視是否開啟了最小附加日誌;

 

源端資料庫建立GoldenGate資料庫使用者並授權:(我們這裡以ogg為例,使用其他亦可)

createuser ogg identified by oracle default tablespace DATA_OL;

grantconnect,resource,unlimited tablespace to ogg;

grantexecute on utl_file to ogg;

grantselect any dictionary,select any table to ogg;

grantalter any table to ogg;

grantflashback any table to ogg;

grantexecute on DBMS_FLASHBACK to ogg;

新增表級transdata

GGSCI(node1) 1> dblogin userid ogg,password oracle

Successfullylogged into database.

GGSCI(node1) 2> add trandata SCOTT.DEPT

Loggingof supplemental redo data enabled for table SCOTT.DEPT.

GGSCI(node1) 3> add trandata SCOTT.EMP

Loggingof supplemental redo data enabled for table SCOTT.EMP.

3.6  配置源端程式組

配置管理程式mgr:

GGSCI(node1) 1> edit param mgr

(貼上下面這段配置)

PORT7839

DYNAMICPORTLIST7840-7939

--AUTOSTARTER *

AUTORESTARTEXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3

LAGREPORTHOURS1

LAGINFOMINUTES30

LAGCRITICALMINUTES45

引數說明均與單點配置相同,參考3.5部分

啟動管理程式:

GGSCI(node1) 2> start mgr

Managerstarted.

GGSCI(node1) 3> info all

Program     Status     Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

 

配置抽取程式:

GGSCI(node1) 6> add extract extnd,tranlog,begin now,threads 2

EXTRACTadded.

GGSCI(node1) 7> add exttrail ./dirdat/nd,extract extnd,megabytes 100

EXTTRAILadded.

GGSCI(node1) 8> edit params extnd

(貼上下面這段配置)

EXTRACTextnd

SETENV(NLS_LANG = "AMERICAN_AMERICA.UTF8")

SETENV(ORACLE_HOME = "/u01/app/oracle/product/10.2.0/db_1")

USERID ogg@RAC, PASSWORDoracle

--GETTRUNCATES

REPORTCOUNTEVERY 1 MINUTES, RATE

DISCARDFILE./dirrpt/extnd.dsc,APPEND,MEGABYTES 1024

--THREADOPTIONS  MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS60000

DBOPTIONS  ALLOWUNUSEDCOLUMN

WARNLONGTRANS2h,CHECKINTERVAL 3m

EXTTRAIL./dirdat/nd

--TRANLOGOPTIONSEXCLUDEUSER USERNAME

FETCHOPTIONSNOUSESNAPSHOT

TRANLOGOPTIONS  CONVERTUCS2CLOBS

TABLEscott.dept;

TABLEscott.emp;

 

注意:threadsRAC節點數相同即可,RAC中不再使用ORACLE_SID設定,而使用USERID ogg@RAC,注意兩個節點均可連線資料庫。

 

新增傳輸程式,配置引數

GGSCI(node1) 2> add extract dpend,exttrailsource ./dirdat/nd

EXTRACTadded.

GGSCI(node1) 3> add rmttrail /uo1/app/ogg/dirdat/nd, EXTRACT DPEND

RMTTRAILadded.

GGSCI(node1) 4> edit params dpend

(貼上下面這段配置)

EXTRACTdpend

SETENV(NLS_LANG = AMERICAN_AMERICA.UTF8)

USERID ogg@RAC, PASSWORDoracle

PASSTHRU

RMTHOST10.123.112.235, MGRPORT 7839, compress

RMTTRAIL/uo1/app/ogg/dirdat/nd

TABLEscott.dept;

TABLEscott.emp;

 

3.7 配置目標資料庫

目標庫建立GoldenGate資料庫使用者並授權:

createuser ogg identified by oracle default tablespace USERS;

grantconnect,resource,unlimited tablespace to ogg;

grantexecute on utl_file to ogg;

grantselect any dictionary,select any table to ogg;

grantalter any table to ogg;

grantflashback any table to ogg;

grantexecute on DBMS_FLASHBACK to ogg;

grantinsert any table to ogg;

grantdelete any table to ogg;

grantupdate any table to ogg;

 

新增checkpoint表

GGSCI(sun.linux) 2> edit params GLOBALS

 

然後在引數檔案中輸入

GGSCHEMAogg

CHECKPOINTTABLEogg.checkpoint

 

GGSCI(sun.linux) 4> dblogin userid ogg,password oracle

Successfullylogged into database.

 

GGSCI(sun.linux) 5> add checkpointtable ogg.checkpoint

 

Successfullycreated checkpoint table ogg.checkpoint.

3.8 配置目標端程式組

配置MGR引數

GGSCI(sun.linux) 6> edit params mgr

(貼上下面這段配置)

PORT7839

DYNAMICPORTLIST7840-7939

--AUTOSTARTER *

AUTORESTARTEXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS./dirdat/*,usecheckpoints, minkeepdays 3

LAGREPORTHOURS1

LAGINFOMINUTES30

LAGCRITICALMINUTES45

 

配置複製佇列

GGSCI(sun.linux)8> add replicat repnd,exttrail/uo1/app/ogg/dirdat/nd,checkpointtable ogg.checkpoint

REPLICATadded.

 

GGSCI(sun.linux) 10> edit params repnd

(貼上下面這段配置)

REPLICATrepnd

SETENV(NLS_LANG = AMERICAN_AMERICA.UTF8)

USERIDogg, PASSWORD oracle

ASSUMETARGETDEFS

REPERRORdefault,discard

discardfile./dirrpt/repnd.dsc,append,megabytes 50

mapscott.*,target pmsbi.*;

 

3.9 啟動程式進行資料同步

啟動源端程式組

啟動抽取程式和傳輸程式:

startextnd

startdpend

啟動後使用info all檢視程式狀態,正常status應該RUNNING,顯示如下:

GGSCI(node1) 19> info all

 

Program     Status     Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING    DPEND       00:00:00      00:00:09   

EXTRACT     RUNNING    EXTND       00:00:00      00:00:04

 

啟動目標端程式

startrepnd

顯示如下:

GGSCI(sun.linux) 2> info all

 

Program     Status     Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

REPLICAT    RUNNING    REPND       00:00:00      00:00:03 

到此RAC到單點OGG的安裝配置就完成了,可以進行資料同步測試了。

 

4       RACà單機下的HA配置

    第4部分的RACà單機的配置僅僅完成了資料複製的功能,不包含高可用的配置,當執行GoldenGate的節點出現故障時複製功能就將終止,如何使複製功能繼續可用呢,有如下兩種方式:

4.1 節點故障的手工處理方式

因為GoldenGate 安裝在共享目錄下,我們可以透過任一個節點連線到共享目錄,啟動GoldenGate執行介面。如果其中一個節點失敗,導致GoldenGate程式中止,可以直接手工在另外一個節點啟動程式組即可。

4.2 GoldenGate的HA配置

我們可以透過使用CRS來管理GoldenGate資源組,並且使用RAC的vip連線到GoldenGate,一旦資料庫的某一個節點宕掉,Oracleclusterware將自動切換到另一個可用節點。

新增一個應用程式VIP資源

為GoldenGate vip資源建立一個profile

[oracle@node1ggate]$ cd $ORA_CRS_HOME/bin

[oracle@node1bin]$ pwd

/u01/app/oracle/product/10.2.0/crs_1/bin

[oracle@node1 bin]$crs_profile –create ggvip –t application \

–a /u01/app/oracle/product/10.2.0/crs_1\

-o oi=eth0,ov=192.168.73.203,on=255.255.255.0

其中:ggvip為建立的應用程式vip的名字

把這個資源註冊到CRS:

[oracle@node1 bin]$crs_register ggvip

把vip 的所有權給root,在root使用者下執行:

[root@node1 bin]#./crs_setperm ggvip –o root

為oracle使用者分配啟動這個資源的許可權:

[root@node1 bin]#./crs_setperm ggvip –u user:oracle:r-x

透過oracle使用者啟動這個資源:

[oracle@node1bin]$ crs_start ggvip

Attempting tostart `ggvip` on member `node1`

Start of`ggvip` on member `node1` succeeded.

檢視資源狀態顯示如下:

[oracle@node1bin]$ crs_stat ggvip -t

Name           Type           Target    State    Host       

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

ggvip          application    ONLINE   ONLINE    node1

 

建立一個action程式

action程式我們這裡放到共享磁碟上,action程式最少需要可以接受三個引數:start,stop,check

start和stop:返回0成功,1 失敗;

check     :返回0表示GoldenGate在執行,1 表示不執行;

下面為示例程式 gg_action.scr的內容:

 

#!/bin/sh

#set the OracleGoldengate installation directory

exportGGS_HOME=/ggate

#set the oraclehome to the database to ensure GoldenGate will get the

#rightenvironment settings to be able to connect to the database

exportORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

#specify delayafter start before checking for successful start

start_delay_secs=5

#Include theGoldenGate home in the library path to start GGSCI

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:${GGS_HOME}:${LD_LIBRARY_PATH}

#check_processvalidates that a manager process is running at the PID

#thatGoldenGate specifies.

 

check_process() {

if ( [ -f"${GGS_HOME}/dirpcs/MGR.pcm" ] )

then

  pid=`cut -f8"${GGS_HOME}/dirpcs/MGR.pcm"`

  if [ ${pid} = `ps -e |grep ${pid} |grep mgr|cut -d " " -f2` ]

  then

    #manager process is running on the PID exitsuccess

    exit 0

  else

  if [ ${pid} = `ps -e |grep ${pid} |grep mgr|cut -d " " -f1` ]

  then

    #manager process is running on the PID exitsuccess

    exit 0

  else

    #manager process is not running on the PID

    exit 1

  fi

fi

else

  #manager is not running because there is noPID file

  exit 1

fi

}

 

#call_ggsci isa generic routine that executes a ggsci command

call_ggsci () {

  ggsci_command=$1

  ggsci_output=`${GGS_HOME}/ggsci << EOF

  ${ggsci_command}

  exit

  EOF`

}

 

case $1 in

'start')

  #start manager

  call_ggsci 'start manager'

  #there is a small delay between issuing thestart manager command

  #and the process being spawned on the OS.wait before checking

  sleep ${start_delay_secs}

  #check whether manager is running and exitaccordingly

  check_process

  ;;

 

'stop')

  #attempt a clean stop for all non-managerprocesses

  #call_ggsci 'stop er *'

  #ensure everything is stopped

  call_ggsci 'stop er *!'

  #call_ggsci 'kill er *'

  #stop manager without (y/n) confirmation

  call_ggsci 'stop manager!'

  #exit success

  exit 0

  ;;

 

'check')

  check_process

  ;;

 

'clean')

  #attempt a clean stop for all non-managerprocesses

  #call_ggsci 'stop er *'

  #ensure everything is stopped

  #call_ggsci 'stop er *!'

  #in case there are lingering processes

  call_ggsci 'kill er *'

  #stop manager without (y/n) confirmation

  call_ggsci 'stop manager!'

  #exit success

  exit 0

  ;;

 

'abort')

  #ensure everything is stopped

  call_ggsci 'stop er *!'

  #in case there are lingering processes

  call_ggsci 'kill er *'

  #stop manager without (y/n) confirmation

  call_ggsci 'stop manager!'

  #exit success

  exit 0

  ;;

 

esac

 

新增一個應用程式profile

[oracle@node1 ggate]$cd $ORA_CRS_HOME/bin

[oracle@node1bin]$ pwd

/u01/app/oracle/product/10.2.0/crs_1/bin

[oracle@node1 bin]$crs_profile –create GG_app –t application \

–r ggvip –a/ggate/gg_action.scr –o ci=10

 

其中:-r ggvip表示ggvip必須在GoldenGate啟動之前執行,

-a /ggate/gg_action.scr指定action 指令碼的位置,在每個節點必須都可用

–o ci=10:檢查的時間間隔設定為10

 

把這個資源註冊到CRS:

[oracle@node1 bin]$crs_register GG_app

 

把vip 的所有權給root,在root使用者下執行:

[root@node1 bin]#./crs_setperm ggvip –o oracle

為oracle使用者分配啟動這個資源的許可權:

[root@node1 bin]#./crs_setperm GG_app –u user:oracle:r-x

透過oracle使用者啟動這個資源:

[oracle@node1bin]$ crs_start GG_app

Attempting tostart `GG_app` on member `node1`

Start of`GG_app` on member `node1` succeeded.

檢視資源狀態顯示如下:

[oracle@node1bin]$ crs_stat GG_app -t

Name           Type           Target    State     Host       

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

GG_app         application    ONLINE   ONLINE    node1 

 

測試節點遷移

在測試環境中可以使用crs_relocate –fGG_app使它強行漂移:過程顯示如下:

[oracle@node1~]$ crs_stat -t

Name           Type           Target    State    Host       

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

GG_app         application   ONLINE    ONLINE    node1      

ggvip           application   ONLINE    ONLINE    node1      

ora....AC1.srv    application   ONLINE    ONLINE    node1      

ora....AC2.srv    application   ONLINE    ONLINE    node2      

ora.RAC.RAC.cs application    ONLINE   ONLINE    node2      

ora....C1.inst    application   ONLINE    ONLINE    node1      

ora....C2.inst    application   ONLINE    ONLINE    node2      

ora.RAC.db     application    ONLINE   ONLINE    node1      

ora....E1.lsnr    application   ONLINE    ONLINE    node1      

ora.node1.gsd   application   ONLINE    ONLINE    node1      

ora.node1.ons   application   ONLINE    ONLINE    node1      

ora.node1.vip   application   ONLINE    ONLINE    node1      

ora....E2.lsnr    application   ONLINE    ONLINE    node2      

ora.node2.gsd   application   ONLINE    ONLINE    node2      

ora.node2.ons   application   ONLINE    ONLINE   node2      

ora.node2.vip   application   ONLINE    ONLINE    node2      

[oracle@node1 ~]$ crs_relocate -f GG_app

Attempting to stop `GG_app` on member `node1`

Stop of `GG_app` on member `node1` succeeded.

Attempting to stop `ggvip` on member `node1`

Stop of `ggvip` on member `node1` succeeded.

Attempting to start `ggvip` on member `node2`

Start of `ggvip` on member `node2` succeeded.

Attempting to start `GG_app` on member `node2`

Start of `GG_app` on member `node2` succeeded.

[oracle@node1~]$ crs_stat -t

Name           Type           Target    State    Host       

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

GG_app         application    ONLINE   ONLINE    node2      

ggvip           application    ONLINE   ONLINE    node2      

ora....AC1.srv    application   ONLINE    ONLINE    node1      

ora....AC2.srv    application   ONLINE    ONLINE    node2      

ora.RAC.RAC.cs  application   ONLINE    ONLINE    node2      

ora....C1.inst     application   ONLINE    ONLINE    node1      

ora....C2.inst     application   ONLINE    ONLINE    node2      

ora.RAC.db      application   ONLINE    ONLINE    node1      

ora....E1.lsnr     application   ONLINE    ONLINE    node1      

ora.node1.gsd    application   ONLINE    ONLINE   node1      

ora.node1.ons    application   ONLINE    ONLINE    node1      

ora.node1.vip    application   ONLINE    ONLINE    node1      

ora....E2.lsnr     application   ONLINE    ONLINE    node2      

ora.node2.gsd    application   ONLINE    ONLINE    node2      

ora.node2.ons    application   ONLINE    ONLINE    node2      

ora.node2.vip    application   ONLINE    ONLINE    node2      

可以看到GoldenGate成功轉移到2節點執行了。

 

 

5       常見錯誤及解決方法

5.1 OGG-00446

啟動源端抽取程式extnd,ggserr.log錯誤顯示如下:

2012-08-1711:11:38  ERROR   OGG-00446 Oracle GoldenGate Capture for Oracle, extnd.prm:  Could not find archived log for sequence45835 thread 1 under default destinations SQL

導致原因:早期歸檔日誌被刪除或已備份,導致找不到歸檔日誌檔案;

處理方法:

將備份的歸檔日誌恢復到歸檔日誌目錄下,即可解決錯誤;

測試庫可以指定抽取程式從某個時間點開始讀取日誌,跳過已刪除的歸檔日誌檔案,命令如下:alterextract extnd,begin 2012-8-16 16:38;

 

5.2 OGG-01223

啟動源端傳輸程式DPEND,ggserr.log錯誤顯示如下:

2012-08-1711:43:50  WARNING OGG-01223  Oracle GoldenGate Capture for Oracle,dpend.prm:  TCP/IP error 79 (Connectionrefused).

2012-08-1711:45:01  WARNING OGG-01223  Oracle GoldenGate Capture for Oracle,dpend.prm:  TCP/IP error 79 (Connectionrefused).

導致原因:因為目標端110上MGR程式沒有啟動,導致報錯

處理方法:

在目標端啟動startmgr啟動程式後,再啟動源端的傳輸程式DPEND,錯誤消失,檔案順利傳輸過來了。

 

正常的日誌如下:

2012-08-1714:31:51  INFO    OGG-00993 Oracle GoldenGate Capture for Oracle, dpend.prm:  EXTRACT DPEND started.

2012-08-1714:33:13  INFO    OGG-01226 Oracle GoldenGate Capture for Oracle, dpend.prm:  Socket buffer size set to 27985 (flush size27985).

2012-08-1714:33:26  INFO    OGG-01052 Oracle GoldenGate Capture for Oracle, dpend.prm:  No recovery is required for target file F:\ogg\dirdat\nd000000,at RBA 0 (file not opened).

2012-08-1714:33:26  INFO    OGG-01478 Oracle GoldenGate Capture for Oracle, dpend.prm:  Output file F:\ogg\dirdat\nd is using formatRELEASE 11.2.

 

5.3 OGG-01224

啟動源端傳輸程式DPEND,ggserr.log錯誤顯示如下:

2012-08-2205:33:10  ERROR   OGG-01224 Oracle GoldenGate Capture for Oracle, dpend.prm:  TCP/IP error 113 (No route to host).

2012-08-2205:33:10  ERROR   OGG-01668 Oracle GoldenGate Capture for Oracle, dpend.prm:  PROCESS ABENDING.

導致原因:因為目標端235上的防火牆沒有關閉,導致報錯

處理方法:

在目標端機器關閉防火牆後,再啟動源端的傳輸程式DPEND,錯誤消失,檔案順利傳輸過來了。

5.4 OGG-01031

啟動源端傳輸程式DPEND,ggserr.log錯誤顯示如下:

2012-08-28 15:09:39  ERROR  OGG-01031  Oracle GoldenGateCapture for Oracle, dpend.prm:  There isa problem in network communication, a remote file problem, encryption keys fortarget and source do not match (if using ENCRYPT) or an unknown error. (Replyreceived is Unable to open file "/uo1/app/ogg/dirdat/nd000004" (error2, No such file or directory)).

2012-08-28 15:09:41  ERROR  OGG-01668  Oracle GoldenGateCapture for Oracle, dpend.prm:  PROCESSABENDING.目標端ggserr.log錯誤顯示如下:

2012-08-2815:06:30  WARNING OGG-01223  Oracle GoldenGate Collector for Oracle:  Unable to lock file"/uo1/app/ogg/dirdat/nd000004" (error 11, Resource temporarilyunavailable).  Lock currently held byprocess id (PID) 13854.

2012-08-2815:06:30  WARNING OGG-01223  Oracle GoldenGate Collector for Oracle:  Unable to open file"/uo1/app/ogg/dirdat/nd000004" (error 2, No such file or directory).

導致原因:可能是網路出現過故障,OGG源端的Data Pump程式與目標斷了聯絡,目標端mgr為其啟動的server程式一直還在執行,下次data pump重啟時目標mgr會試圖生成另外一個server程式,這樣兩個程式會爭同一個佇列檔案。

處理方法:

1、停掉源端的所有data pump,使用ps –ef|grep server(或OGG安裝目錄)看看是不是還有OGG的server程式在跑,如果有,殺死它(一定要確認源端data pump全停掉,並且殺的是server程式,不要殺其它extract/replicat/mgr等),重啟源端data pump即可。

 

2、可能是目標端的trail file出問題了,前滾重新生成一個新的佇列檔案

SEND EXTRACT xxx ETROLLOVER

或者:alter extract xxx etrollover

xxx為datapump的名稱

 

5.5 OGG-01154

錯誤資訊:2011-03-29 15:53:57  WARNINGOGG-01154  Oracle GoldenGate Delivery forOracle, repya.prm:  SQL error 14402mapping EPMA.D_METER to E

PMA.D_METER OCIError ORA-14402: updating partition key column would cause a partition change(status = 14402), SQL .

導致原因:源端更新了分割槽列,但目標端沒有開啟行移動,導致更新時報錯;

處理方法:SQLPLUS>alter table SCHEMA.TABLENAME enable row movement;

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

相關文章