安裝並配置goldengate

myownstars發表於2013-06-01

OS配置

記憶體

每個程式需要25-55M記憶體,最大支援5000預設300併發;

SWAP

預設OGG將資料swapdirtmp子目錄,大事務很容易將整個磁碟填滿,可為其單獨分配一個磁碟,由cachemgrcachedirectory選項指定,見注1

磁碟

安裝路徑需要40M

許可權

Extract/replicat/manager程式必須對OGG目錄有讀寫許可權

 

安裝

解壓安裝包,執行shell命令呼叫GGSCI,執行create subdirs

GGSCI (raclinux1.gj.com) 1> create subdirs

Creating subdirectories under current directory /u02/stage_ogg112_ora11

Parameter files            /u02/stage_ogg112_ora11/dirprm: already exists

Report files               /u02/stage_ogg112_ora11/dirrpt: created

Checkpoint files           /u02/stage_ogg112_ora11/dirchk: created

Process status files       /u02/stage_ogg112_ora11/dirpcs: created

SQL script. files           /u02/stage_ogg112_ora11/dirsql: created

Database definitions files /u02/stage_ogg112_ora11/dirdef: created

Extract data files         /u02/stage_ogg112_ora11/dirdat: created

Temporary files            /u02/stage_ogg112_ora11/dirtmp: created

Stdout files               /u02/stage_ogg112_ora11/dirout: created

 

建立資料庫使用者並賦許可權,mgrextract/replicat可共享同一使用者

 

如果要複製DDL還需單獨建立一個使用者http://space.itpub.net/?uid-15480802-action-viewspace-itemid-762694

 

編輯引數檔案

編輯manager引數檔案 edit params MGR

--唯一不可或缺的只有PORT,但強烈推薦dynamicportlist

PORT 7809

DYNAMICPORTLIST 7810-7820, 7830

AUTOSTART ER t*

AUTORESTART ER t*, RETRIES 4, WAITMINUTES 4

STARTUPVALIDATIONDELAY 5

PURGEOLDEXTRACTS /ogg/dirdat/tt*, USECHECKPOINTS, MINKEEPHOURS 2

預設埠號7809,由manager引數檔案的PORT決定;

如果OGG target端安裝了防火牆,需要額外的埠接受遠端OGG的動態TCP/IP連線,其中每個collector/replicat程式各佔一個埠,使用引數dynamicportlist為其分配埠,

collector程式負責查詢繫結,如果沒有指定dynamicportlist或埠數不足,collector嘗試使用7840埠,不可用則遞增繼續嘗試,此行為會延阻遠端請求的接受;

 

編輯extract/replicat引數檔案

如果有多個instance,可在引數檔案中設定

Setenv(ORACLE_HOME = “”)

Setenv(ORACLE_SID = “”)

 

Replicat需建立檢查點表

1

DBLOGIN, USERID db_user [, PASSWORD pw [encryption options]]

ADD CHECKPOINTTABLE owner.table

2

Edit params ./GLOBALS

Checkpointtable owner.table

檢查點表預設使用非同步commit nowait機制,即replicat不必等待操作完畢便可返回;可編輯DBOPTIONS引數使用disablecommitnowait

如果使用checkpoint檔案替代檢查點表,replicat使用commit wait避免資料庫失敗導致事務不一致;

 

 

Extract程式有2種模式:

ClassicOGGredo/archive log捕獲資訊

Integratedextract程式直接與db logmining server互動以接受LCR,相比classic支援更多資料型別

優點:

1 由於使用logmining server訪問redo stream,可自動在不同copy間切換

2 faster filtering of tables

3 handle point-in-time recovery and RAC integration more efficiently

4 RMAN自動保留待extract處理的archive log

有兩種配置方式--Localsource db mining db為同一個;Downstreammining dbsource db分開存放

 

 

 

配置資料庫

完整性約束

禁用target表的trigger和級聯約束

Dboptions suppresstriggers:支援1020511R2,會話期間replicat不禁用trigger,但會阻止trigger執行;其他版本則須禁用完整性和觸發器約束;

 

延遲約束檢查

如果source table的約束為deferrabletarget table必須為deferrable

1 replicat引數檔案使用SQLEXEC (alter session set constraint deferred)

2 replicat引數檔案配置dboptions deferrefconst

配置replicat克服由transient 主鍵duplicate導致的完整性錯誤:

Update item set code = 2 where code =1 ;

Update item set code = 3 where code =2 ;

Update item set code = 4 where code =3 ;

--code為主鍵列,replicat執行第一條語句會遭遇ORA-00001,預設不處理即replicat abend

Pre11202replicat配置handletpkuupdate,同時將target table的約束改為deferrable initially immediate,否則依照handcollisions/reperror定義的規則處理出現的錯誤

11202replicat預設使用oracle workspace manager自動處理此問題,有2點要求:1 replicat資料庫使用者賦予dbms_xstream_gg.enable_tdup_workspace()2 target表不能有deferrable約束

如果使用workspace,會忽略handlecollisions/reperror,如果使用batchsql,遭遇錯誤時會退出grouped transaction改為正常模式執行,如果繼續發生ora-00001則回滾此事務;

Workspace不支援一條sql同時包含transient PK duplicateout-of-line column update,例如LOB/XMLType

 

確保行唯一性

除非使用了keycols,否則按如下順序定位行

主鍵;第一個unique key(所含列不能為invisible index);將所有列組建為pseudo key

 

配置logging properties

開啟DB supplemental log

開啟schema supplemental log:用於DDL replication,執行add schematrandata schema

開啟table supplemental logadd trandata table [, COLS columns] [, NOKEY]

如果target 表沒有pk/uk則可能存在重複行,為限制更新行數可使用dboptions limitrows

 

字符集轉換

使用setenv設定NLS_LANG引數:SETENV (NLS_LANG = NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET)

檢視global設定:

Sqlplus執行如下命令

SHOW PARAMETER NLS_LANGUAGE

SHOW PARAMETER NLS_TERRITORY

SELECT name, value$ from SYS.PROPS$ WHERE name = 'NLS_CHARACTERSET';

SHOW PARAMETER NLS_LENGTH_SEMANTICS

GGSCI檢視view report檢視NLS_LANG相應設定

 

設定fetch選項

部分update操作需要extractsource db獲取額外行資料

預設OGG使用閃回查詢獲取一致性讀,也可強制其從表直接讀取最新資料fetchoptions nousesnapshot

Stats extract , reportfetch—顯示extract fetch資訊,可配置statoptions reportfetch將其作為預設選項

 

特殊資料型別

TIMESTAMP

Oracle會將TIMESTAMP WITH LOCAL TIME ZONE轉換為資料庫的本地時區,如果source/target db時區不同則會出現資料不一致;

為此可設定repicat引數檔案,在USERID後新增:SQLEXEC "ALTER SESSION SET TIME_ZONE = value of source_timezone"

LOB

RepliatLOB寫入target db時會導致碎片,為減少IO可使用LOB快取機制,即先將資料快取到buffer,等後者寫滿一次性刷入磁碟;

可透過dboptionslobwritesize/disablelobcaching設定;

如果clob儲存了binary資料,將NLS_LANGUAGE/NLS_LANG設定為相同值;

Integrated captureredo log讀取lobs,而update只記錄改動部分的資料,為強制記錄整個lob資料,配置extract引數tranlogoptionsfetchpartiallob選項;

Unused列:預設不支援,可配置extractdboptions選項allowunusedcolumn將其捕獲

Redo/archive log位於不同路徑:配置extracttranlogoptions選項

Truncate操作:單一的truncate table可透過gettruncats引數;其他諸如alter table truncate partition則須配置DDL

Sequence:使用OGG DDL

 

 

1

CACHEMGR {

[, CACHESIZE

[, CACHEDIRECTORY [] [, ...]]

[, CACHEPAGEOUTSIZE ]

}

實際耗用的cachesize可透過report報告中的process vm avail from OS檢視

cachedirectory預設為安裝目錄的dirtmp

CACHEMGR virtual memory values (may have been adjusted)

CACHESIZE: 1G

CACHEPAGEOUTSIZE (normal): 4M

PROCESS VM AVAIL FROM OS (min): 1.79G

CACHESIZEMAX (strict force to disk): 1.58G

 

 

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

相關文章