GoldenGate的配置
2.1.源端配置
(1)設置歸檔模式
Ogg是基於日志的結構化數據復制軟件,所以源端數據庫必須開啟歸檔模式。
歸檔模式就是保存所有的事務日志,記錄對數據庫所做的修改,比如插入,刪除,更新數據等,對這些操作都會記錄在聯機重做日志里。相反非歸檔就是不保存舊事務日志。
(2) 配置源端mgr
edit params mgr --- 編輯mgr進程配置文件
port 7809
DYNAMICPORTLIST 7810-7920
autostart er *
autorestart er *, retries 5, waitminutes 3
purgeoldextracts ./dirdat/*,usecheckpoints, minkeepdays 7
ACCESSRULE, PROG *, IPADDR 192.168.8.*, ALLOW;
Start mgr --- 啟動mgr進程
常見參數如下:
PORT:指定服務監聽端口;這里以7809為例,默認端口為7809
DYNAMICPORTLIST:動態端口:可以制定最大256個可用端口的動態列表,當指定的端口不可用時,管理進程將會從列表中選擇一個可用的端口
源端和目標段的Collector、Replicat、GGSCI進程通信也會使用這些端口;
COMMENT:注釋行,也可以用--來代替;
AUTOSTART:指定在管理進程啟動時自動啟動哪些進程;
AUTORESTART:自動重啟參數設置:本處設置表示每3分鍾嘗試重新啟動所有EXTRACT進程,共嘗試5次;
PURGEOLDEXTRACTS:定期清理trail文件設置:本處設置表示對於超過7天的trail文件進行刪除。
ACCESSRULE, PROG *, IPADDR 192.168.8.*, ALLOW 一般只設置在目標端,允許被這個網段的ip地址訪問。
(3)添加表級附加日志(源端)
登陸數據庫
dblogin userid 用戶名,password 密碼
add trandata ODS.OGG_LCCONT
刪除表級日志:
delete trandata ODS.OGG_LCCONT
(4) 配置Extract抽取進程
添加隊列文件
add extract ext01, tranlog, begin now
add exttrail ./dirdat/ll, extract ext01, MEGABYTES 100 ----指定本地trail文件
edit params ext01 --- 編輯ext01進程配置文件
EXTRACT ext01
setenv(NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
SETENV(ORACLE_HOME = "/opt/oracle/product/11.2.0")
SETENV(ORACLE_SID = "orcl")
USERID 用戶名, PASSWORD 密碼
EXTTRAIL ./dirdat/ll
--getupdatebefores
nocompressdeletes
table ODS_USER.OGG_LCCONT;
常見參數如下:
Megabytes:指定隊列大小,本處設置表示100M
SETENV:配置系統環境變量
USERID/ PASSWORD:指定OGG連接數據庫的用戶名和密碼
COMMENT:注釋行,也可以用--來代替;
TABLE:定義需復制的表,后面需以;結尾
TABLEEXCLUDE:定義需要排除的表,如果在TABLE參數中使用了通配符,可以使用該參數指定排除掉得表。
dynamicresolution指的是GoldenGatex動態解析源端的表名。與非動態對應,默認GoldenGate會在一個進程啟動的時候它會到數據庫中查詢表的屬性,然后創建一個對象記錄。這條記錄在內存以及磁盤中維護,如果需要復制的表很多,那么創建的過程非常耗時。
EXTTRAIL:指定寫入到本地的哪個隊列;
GETUPDATEAFTERS|IGNOREUPDATEAFTERS:
是否在隊列中寫入后影像,缺省復制
GETUPDATEBEFORES| IGNOREUPDATEBEFORES:
是否在隊列中寫入前影像,缺省不復制
GETUPDATES|IGNOREUPDATES:
是否復制UPDATE操作,缺省復制
GETDELETES|IGNOREDELETES:
是否復制DELETE操作,缺省復制
GETINSERTS|IGNOREINSERTS:
是否復制INSERT操作,缺省復制
GETTRUNCATES|IGNORETRUNDATES:
是否復制TRUNCATE操作,缺省不復制
(5)配置Extract投遞進程
添加隊列文件
add extract pmpa, EXTTRAILSOURCE ./dirdat/ll
add rmttrail ./dirdat/ll, ext pmpa, MEGABYTES 100 -- 指定遠程trail文件
edit params pmpa --- 編輯pmpa配置文件
extract pmpa
setenv(NLS_LANG = " AMERICAN_AMERICA.AL32UTF8")
rmthost 10.00.00.00, mgrport 7819, compress
rmttrail ./dirdat/ll
dynamicresolution
GETUPDATEBEFORES
table ODS_USER.OGG_LCCONT;
RMTHOST:指定目標系統及其GoldengateManager進程的端口號,還用於定義是否使用壓縮進行傳輸,本例中的compress為壓縮傳輸;
RMTTRAIL:指定寫入到目標斷的哪個隊列;
2.2.目標端配置
(1)配置目標端mgr
edit params mgr
port 7909
DYNAMICPORTLIST 7910-7930, 7933, 7935
autostart er *
autorestart er *, retries 5, waitminutes 3
purgeoldextracts ./dirdat/*,usecheckpoints, minkeepdays 7
ACCESSRULE, PROG *, IPADDR 10.1.0.*, ALLOW
(2) 配置檢查點
編輯全局配置文件
1)edit params ./GLOBALS
CHECKPOINTTABLE cs_user.checkpoint
2) 添加checkpoint表
dblogin userid ODS,password ODS
3)登陸成功后創建checkpoint表
add checkpointtable ods.checkpoint
查看創建的表
info checkpointtable ods.checkpoint
(3) 配置復制進程
edit param repa ---- 編輯repa進程配置文件
replicat repa
setenv ( NLS_LANG = "AMERICAN_AMERICA.AL32UTF8" )
SETENV(ORACLE_SID = "orcl")
USERID 用戶名, PASSWORD 密碼
reperror default,discard
discardfile ./dirrpt/repa.dsc,append, megabytes 10
assumetargetdefs
dynamicresolution
map ODS.OGG_LCCONT2019, target cs.L_LCCONT9;
實時操作記錄軌跡配置:
REPLICAT repa2
setenv ( NLS_LANG= "AMERICAN_AMERICA.AL32UTF8" )
SETENV(ORACLE_SID= "orcl")
USERID DMA_USER, PASSWORD DMA_USER
ASSUMETARGETDEFS
INSERTALLRECORDS
discardfile ./dirrpt/repa2.dsc,append, megabytes 10
map CS_USER.CS_LCCONT, target DMA_USER.CS_LCCONT_HIS,
COLMAP (usedefaults,
DEAL_DATE=@getenv('GGHEADER','COMMITTIMESTAMP'),
OP_FLAG=@getenv('GGHEADER','OPTYPE')
);
注:getentv中的引號使用,Oracle11g 用單引號,一般oracle10g 使用雙引號
添加隊列文件
add rep repa, exttrail ./dirdat/ld, checkpointtable ods.checkpoint
add rep repa, exttrail ./dirdat/ll, checkpointtable ods.checkpoint
常見參數如下:
REPLICAT進程參數配置說明:
ASSUMETARGETDEFS:假定兩端數據結構一致使用此參數;
SOURCEDEFS:假定兩端數據結構不一致,使用此參數指定源端的數據結構定義文件,該文件需要由GlodenGate工具產生。
MAP:用於指定源端與目標端表的映射關系;
MAPEXCLUDE:用於使用在MAP中使用*匹配時排除掉指定的表;
REPERROR:定義出錯以后進程的響應,一般可以定義為兩種:
ABEND,即一旦出現錯誤即停止復制,此為缺省配置;
DISCARD,出現錯誤后繼續復制,只是把錯誤的數據放到discard文件中。
DISCARDFILE:定義discardfile文件位置,如果處理中有記錄出錯會寫入到此文件中;
SQLEXEC:在進程運行時首先運行一個SQL語句;
GROUPTRANSOPS:將小交易合並成一個大的交易進行提交,減少提交次數,降低系統IO消耗。
MAXTRANSOPS:將大交易拆分,每XX條記錄提交一次。
2.3.啟動源端和目標端的進程
(1) 啟動源端
Start mgr – 啟動管理進程
Start ext * ----啟動所有的extract進程
Start ext1 ---- 單獨啟動ext1進程
Info all ---- 查看所有進程的狀態
正常的狀態都是RUNNING
(2) 啟動目標端
Start mgr --- 啟動管理進程
Start repa -- 啟動復制進程