Oracle GoldenGate安裝(二)

jason_yehua發表於2022-12-02

相關元件

1.  確定  DDL SCHEMA

需要配置在  GLOBALS  中:  GGSCHEMA odc

 

2.  退出所有  ORACLE  會話,不允許新會話產生

 

3.sqlplus "/as sysdba"            ----  必須  sysdba  連入

注:對於是10g  的源端,需要關閉回收站:

alter session set recyclebin=off;

 

4.@marker_setup

該指令碼安裝  marker  系統,這部分為啟用  DLL  支援所必備,執行該指令碼時會提示輸入  GoldenGate  管理帳戶  schema  名。

 

5. @ddl_setup

執行該指令碼要確認關閉掉所有  ORACLE  會話,未被關閉的會話會以列表形式顯示,執行過程中會要求希望物件屬主,並選擇安裝模式。如果是初次安裝就選擇“  INITIALSETUP  ”,該模式假設當前沒有任何  GoldenGate DDL  物件存在,如果存在則會刪除並重建。如果是重新安裝,則應該選擇“  NORMAL    .

提示輸入  DDL SCHEMA  ,擇安裝型別:  INITIALSETUP

 

6. @role_setup

該操作會重建  DDL  同步所需的許可權,授予  GoldenGate  中的  DDL  物件以  DML  許可權。

提示你執行一條  GRANT  語句,執行即可!

 

7. @ddl_enable.sql

啟用  DDL  觸發器,以捕獲  DDL  操作。

 

8. @ddl_pin.sql odc

要提高  DDL  觸發器的效能,可以透過  ddl_pin  指令碼,該指令碼會將觸發器使用的包載入到記憶體,以此提高效率。該指令碼執行時需要引用  dbms_shared_pool  系統包,因此在使用  ddl_pin  指令碼前需要確保  dbms_shared_pool  可用。執行  ddl_pin  指令碼需要指定  GoldenGate  管理員  schema  名稱  .

 

新增表級別附加日誌

 

ggsci>  dblogin userid odc password odc  

ggsci>

ggsci>

 

注:

對於9i  的資料庫,因為列太多會報錯,要求不能超過33  列,所以列太多的表格要分開新增,例如:

查出該表的列

SQL> select COLUMN_NAME from DBA_TAB_COLUMNS where table_name='ACMRTB_20121129' order by COLUMN_ID;

分組新增補充日誌

SQL> alter table OGGTEST.ACMRTB_20121129 ADD SUPPLEMENTAL LOG GROUP loggroup1 (SETTDATE,ACCTYPE)

SQL> alter table OGGTEST.ACMRTB_20121129 ADD SUPPLEMENTAL LOG GROUP loggroup2 (SETTDATE,ACCTYPE,ACCBAL,TODAYSVCNT,TODAYSVAMT,TODAYFHCNT,TODAYFHAMT,TODAYQCCNT,TODAYQCAMT,TODAYRTNCNT,TODAYRTNAMT,TODAYMVCNT,TODAYMVAMT,TODAYHDFEECNT,TODAYHDFEEAMT,TODAYSRVFEECNT,TODAYSRVFEEAMT,TODAYOVERFEECNT,TODAYOVERFEEAMT,TOTALSVCNT,TOTALSVAMT,TOTALFHCNT,TOTALFHAMT,TOTALQCCNT,TOTALQCAMT,TOTALRTNCNT,TOTALRTNAMT,TOTALMVCNT,TOTALMVAMT,TOTALHDFEECNT,TOTALHDFEEAMT,TOTALSRVFEECNT,TOTALSRVFEEAMT) ALWAYS;

SQL> alter table OGGTEST.ACMRTB_20121129 ADD SUPPLEMENTAL LOG GROUP loggroup3 (TOTALOVERFEECNT,TOTALOVERFEEAMT,RSVD)

 

SQL>select COLUMN_NAME from DBA_TAB_COLUMNS where table_name='ACMRTB_20121129' order by COLUMN_ID;

SQL>alter table OGGTEST.BATGOODSINOUTTXNTB ADD SUPPLEMENTAL LOG GROUP loggroup4 (INOUTSEQ,ORDERID,ORDERSTATE,ORDERTYPE,CARDNUMBER,TOSTOREID,TOSTORENAME,FROMSTOREID,FROMSTORENAME,INOUTFLAG,ERRCODE,CTDEALTIME,EDTTIME,EDTOPRID,GOODSCOUNT,GOODSID,GOODSATTR,SINGLEPRICE,SUMPRICE,OPRID,TXNDATE,TXNTIME,PECULIARDATA1,PECULIARDATA2,PECULIARDATA3,PECULIARDATA4,PAYTYPE,PAYTYPEID,RSVD1,RSVD2,RSVD3,RSVD4,RSVD5)

SQL>alter table OGGTEST.BATGOODSINOUTTXNTB ADD SUPPLEMENTAL LOG GROUP loggroup5 (TODPTID,FROMDPTID,SENDSTOREID)

 

 

 

抽取程式要配置的引數:

引數

閥值

定義

extract

sm_ext

指定程式名和型別 

setenv

(NLS_LANG="SIMPLIFIED   CHINESE_CHINA.ZHS16GBK")

配置系統環境變數

userid/ password

odc

指定OGG  連線資料庫的使用者名稱和密碼

exttrail

./dirdat/sm

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

tranlogoptions

偏移量設定需要查詢偏移量

$ORACLE_HOME/bin/offset

  TRANLOGOPTIONS RAWDEVICEOFFSET 0 

指定在解析資料庫日誌時所需要的特殊引數如果是AIX  RAC  redolog  在裸裝置上,需設定偏移量

 

altarchivelogdest

instance ora11g1+MCDATA/archlog,altarchivelogdest   instance ora11g2 +MCDATA/archlog

指定歸檔路徑,不同的作業系統、資料庫版本有不通的配置方法

FETCHOPTIONS


指定ogg  獲取資料的方式

FETCHPKUPDATECOLS


複製程式出現丟失update  記錄(missing update  )並且更新的是主鍵,update  將轉換成insert  當使用了HANDLECOLLISIONS  時,請使用該引數。)

ddl

include objname OGGTEST.* exclude objtype   'TRIGGER'

使用DDL  引數,指定DDL  的支援和過濾DDL  操作。

table

OGGTEST.*

定義需要複製的表,後面需以結尾 

 

新增程式:

ggsci>  (如果是單機,可以不寫thread  引數)

ggsci>

注:

tranlog  :表示資料抓取的來源是資料庫的  redo  資料。

threads 2  :表示資料庫有多少個  threads  ,單例項基本上是  1  或者不設。

begin now  :表示在啟動這個抓取程式的就去抓取資料。

./dirdat  :表示  trail  檔案的目錄

sm    trail  檔案的字首

extract sm_ext  :值指定給那個程式用的(  sm_ext  )。

引數配置:

 

情況一:單機資料庫

直接配置歸檔路徑

ggsci>

extract sm_ext

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc,password odc

exttrail ./dirdat/sm

tranlogoptions altarchivelogdest  /archive

FETCHOPTIONS FETCHPKUPDATECOLS

ddl include objname OGGTEST.* exclude objtype 'TRIGGER' &

include objname OGGTEST.* exclude objtype 'TRIGGER'

table OGGTEST.*;

 

情況二:  rac  資料庫

引數配置方法一:

配置  ASM  連線串,需要將各節點的歸檔資訊都配置在引數檔案中,且需要配置  asm  動態註冊,並將  asm    sys  使用者名稱和密碼配置在程式引數檔案中,適用所有資料庫版本。

 

具體方法如下:

  tnsnames.ora  中新增連線串(只要在要安裝  ogg  服務的那個節點配置即可):

 [  oracle@rac1 admin]$ cat tnsnames.ora

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.16)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = +ASM)

(INSTANCE_NAME = +ASM1)

)

)

 

注:  11g  只要配置連線串即可(因為  asm  例項註冊進監聽狀態為  ready  ),  10g  需要配置監聽,如果源端生產庫可以重啟監聽,只要加入  OGG  監聽靜態註冊即可,如果源端生產庫不讓重啟監聽,則要加入一個新的  OGG  監聽動態註冊,配置如下:

##########  新增一個監聽(避免重啟原有監聽)###########

[oracle@rac1 rac1]$ vi listener.ora 

SID_LIST_LISTENER_OGG =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = +ASM)

      (ORACLE_HOME = /oracle/app/product/10.2.0)

      (SID_NAME = +ASM1)

    )

  )

 

LISTENER_OGG =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1522))

    )

  )

啟動新監聽listener_ogg

引數配置:

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc,password odc

exttrail ./dirdat/sm

tranlogoptions altarchivelogdest instance  ora11g1+MCDATA/archlog,altarchivelogdest instance ora11g2 +MCDATA/archlog 

tranlogoptions  asmuser sys@asm, asmpassword oracle      

FETCHOPTIONS FETCHPKUPDATECOLS

include objname OGGTEST.* exclude objtype 'TRIGGER'

table OGGTEST.*;

 

 

引數配置方法二:

 

資料庫版本  10.2.0.5  及以上的版本,或  11.2.0.2  以上版本(但  11gR1  不支援),  Oracle  提供了一個新的  ASM API  介面  ,可以讓  extract  程式直接利用資料庫伺服器來訪問  redo    archive log  ,無需配置歸檔路徑,直接配置引數  tranlogoptions dblogreader  引數即可,自動會找到歸檔路徑。

 

具體引數如下

extract sm_ext

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc,password odc

exttrail ./dirdat/sm

tranlogoptions dblogreader

FETCHOPTIONS FETCHPKUPDATECOLS

ddl include objname OGGTEST.* exclude objtype 'TRIGGER' &

include objname OGGTEST.* exclude objtype 'TRIGGER'

table OGGTEST.*;

 

  1  :關於引數  DBLOGREADER  的說明,  mos  文件中寫到:

(Oracle)Valid for Extract in classic capture mode. Causes Extract to use a newer ASM API that is available as of Oracle 10.2.0.5 and later10gR2 versions and Oracle 11.2.0.2 and later 11gR2 versions(but not in Oracle 11gR1 versions). This API uses the database server to access the redo log and archive logs, instead of connecting directly to the Oracle ASM instance.The database must contain the libraries that contain the API modules and must be running

To use this feature,the Extract database user must have  SELECT ANY TRANSACTION privilege.

另外,對於版本高於  11.2.0.4  的源端資料庫,需要開啟資料庫級別的引數  ENABLE_GOLDENGATE_REPLICATION  ,方法如下:

   ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

 

 

  2  :如果源端是  AIX  redo  是裸裝置上且設定了偏移量,則需要在以上引數里加上:

   TRANLOGOPTIONS RAWDEVICEOFFSET 0

 

檢查  AIX  裸裝置是否有偏移量:

$ORACLE_HOME/bin/offset

$[/oracle]$ORACLE_HOME/bin/offset  /dev/lv_redo2_1g_22   4096

$[/oracle]$ORACLE_HOME/bin/offset  /dev/lv_redo1_1g_01   4096

 

 

情況三:只挖歸檔模式(  ALO mode 

OGG  在捕獲資料變更的時候優先從線上日誌中抽取資料,如果該  redo  已經切換,則會去歸檔日誌中抽取資料變更。

如果需要強制設定  ogg  從歸檔日誌讀取資料,則需要使用引數  TRANLOGOPTIONS ARCHIVEDLOGONLY

只讀歸檔:

在備庫環境上部署抽取程式,則需要配置  TRANLOGOPTIONS ARCHIVEDLOGONLY  引數,且需要在  tnsnames.ora  檔案中配置連線串能夠連到源端生產庫(具體部署節點的  ip  ,不要配置  scan-ip  ),引數如下:

 

userid odc@orcl,password odc          --orcl  連線串為剛才配置在tnsnames.ora  檔案中的

TRANLOGOPTIONS ARCHIVEDLOGONLY           --  只挖歸檔的引數

tranlogoptions altarchivelogdest /data/orcl/archlog       --  具體歸檔路徑

 

 

 

情況四:表結構不同的配置

當源端的表結構和目標端的表結構(包括欄位名、資料型別)不一致時(或源端和目標端資料庫不一致時),需要多配置一個定義檔案,使  ogg  目標端可正常應用。

源端編輯

GGSCI (rac2) 3> edit params defgen

defsfile /odc/dirdef/sm.def purge

userid odc, password odc

table  oggtest.t2;

table oggtest.test;

 

desfile  def  檔案輸出路徑

table:  可以指定table  ,也可以使用username.*  到相應使用者下所有表結構資訊。

 

生成目標端需要的定義檔案

[oracle@rac2 ~]$ cd /odc

[oracle@rac2 odc]$ ./defgen paramfile /odc/dirprm/defgen.prm

 

會在/odc/dirdef  路徑下生成sm.def  檔案。

手工將產生的定義檔案傳輸到目標端的dirdef  目錄下

 

目標端應用程式中新增引數SOURCEDEFS  以及colmap  引數:

SOURCEDEFS /odc/dirdef/sm.def

map oggtest.t2,target oggtest.t2,colmap(USEDEFAULTS col1=col,col2=col2,col3=col3);

具體見建立replicat  程式章節

其他配置一樣。

 

 

 

啟動程式觀察,能夠挖掘再繼續下面的操作:

start sm_ext

 

 

 

傳輸程式要配置的引數:

引數

閥值

定義

extract

sm_dmp

指定程式名和型別 

userid/ password

odc

指定OGG  連線資料庫的使用者名稱和密碼

rmthost

172.10.10.154

指定目標端主機IP

mgrport

7809

指定管理程式埠號

rmttrail

./dirdat/sm

指定目標端儲存佇列檔案的目錄

passthru

/oradata/oradata/smkdb/archive

採用pass-through  模式處理表

table

OGGTEST.*

定義需要複製的表,後面需以結尾 

 

 

ggsci>

注:

EXTTRAILSOURCE  :指定提取檔案作為資料來源

ADD RMTTRAIL  :在目標資料庫上建立一個  trail

 

ggsci>edit param sm_dmp

 

引數:

extract sm_dmp

userid odc,password odc

rmthost 172.16.10.154, mgrport 7809

rmttrail ./dirdat/sm

--rmttrail ./dirdat/tj, 11.1

passthru

table OGGTEST.*;

 

ggsci>start sm_dmp


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

相關文章