###OGG for sqlserver engryption && insert/deletesql
####1. 源端操做數據庫
1.1 獲取key
做爲數據庫用戶密碼加密app
d:\GoldenGate\gg>keygen 128 1 0xC6E1D0189BCF020DECDFF52DC23FCA39
做爲抽取進程日誌加密以及目投遞進程加密的密鑰 d:\GoldenGate\gg>keygen 192 1 0x0542696E32B8342A7E1EEF23CFC9F707C26D27726785C14Aide
1.2 建立祕鑰文件
在ogg目錄下d:\GoldenGate\gg>建立 ENCKEYS文件(注意:沒有後綴名),文件內容:sqlserver
qktz_key 0xC6E1D0189BCF020DECDFF52DC23FCA39 key_extr 0x0542696E32B8342A7E1EEF23CFC9F707C26D27726785C14A
1.3 登錄ggsci,產生加密值
d:\GoldenGate\gg>ggsci Oracle GoldenGate Command Interpreter for ODBC Version 11.1.1.0.0 Build 078 Windows (optimized), Microsoft SQL Server on Jul 28 2010 18:55:52 Copyright (C) 1995, 2010, Oracle and/or its affiliates. All rights reserved. GGSCI (WIN-T5DNTIITL4R) 3> encrypt password xxxxxxxxxx encryptkey xxxxxx Encrypted password: AACAAAAAAAAAAAQAPGTBCFPGTARDEAGGCHUCAGHBEIHDZILA
驗證一下登陸測試
dblogin sourcedb dbxxxxx userid gg01 ,password AACAAAAAAAAAAAQAPGTBCFPGTARDEAGGCHUCAGHBEIHDZILA,encryptkey xxxxx Successfully logged into database.
建立測試表ui
create table u_test(id int primary key identity(1,1) ,tel nvarchar(20))
啓用擴展日誌加密
dblogin sourcedb dbxxxx userid gg01 ,password AACAAAAAAAAAAAQAPGTBCFPGTARDEAGGCHUCAGHBEIHDZILA,encryptkey xxxxx add trandata dbo.u_test --查看擴展狀況信息 Info trandata dbo.u_test
1.4 配置源端EXTRACT 進程
DD EXTRACT 命令新建一個 EXTRACT 組 -- 基於日誌方式,當即生效spa
GGSCI>add extract extrate ,tranlog,begin now
ADD EXTTRAIL 命令新建一個 local trail日誌
GGSCI>add exttrail D:\GoldenGate\gg\dirdat\ex, extract extrate
1.5 編輯源端ogg抽取進程extrate的參數文件
edit param extrate
extract extrate sourcedb dbxxxx ,userid gg01, password AACAAAAAAAAAAAQAPGTBCFPGTARDEAGGCHUCAGHBEIHDZILA ,encryptkey xxxx --Encrypt My trail with AES192 ENCRYPTTRAIL AES192 KEYNAME key_extr exttrail D:\GoldenGate\gg\dirdat\ex COMPRESSUPDATES GETTRUNCATES numfiles 5000 DISCARDFILE D:\GoldenGate\gg\dirrpt\ext2.dsc, append, megabytes 100 WILDCARDRESOLVE DYNAMIC TRANLOGOPTIONS NOMANAGESECONDARYTRUNCATIONPOINT table dbo.u_test;
1.6源端開啓抽取進程
注意:這裏可能會報錯:
2017-03-28 13:25:49 ERROR OGG-00868 Oracle GoldenGate Capture for ODBC, EXTRATE.prm: Supplemental logging is disabled for database 'chkjdb'. To enable logging, perform the following: 1) Set 'trunc. log on chkpt.' to false. 2) Create a full backup of the database. Please refer to the "Oracle GoldenGate For Windows and UNIX Administration Guide" for details.
是因爲抽取程序開啓時,SqlServer數據庫須要有完整全備+的日誌鏈,全部這裏須要先全備一次 而後 作一第二天志備份
start extrate GGSCI (WIN-T5DNTIITL4R) 19> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXTRATE 00:00:00 00:00:03
1.7 配置源端PUMP投遞進程
用add extract 新建本地trail文件 --注意:本地位置必須和抽取進程配置文件中的的rmttrail D:\GoldenGate\gg\dirdat\ex一致。
GGSCI>add EXTRACT pumprate ,EXTTRAILSOURCE D:\GoldenGate\gg\dirdat\ex,BEGIN NOW
用add rmttrail命令指定遠端trail文件
GGSCI>add rmttrail D:\GoldenGate\gg\dirdat\ex extract pumprate
1.8 編輯源端ogg投遞進程pumprate的參數文件
edit param pumprate
extract pumprate RMTHOST 192.168.0.x, MGRPORT 8001 PASSTHRU gettruncates wildcardresolve dynamic DECRYPTTRAIL AES128 KEYNAME qktz_key ENCRYPTTRAIL AES128 KEYNAME qktz_key RMTTRAIL D:\GoldenGate\gg\dirdat\ex table dbo.u_test;
由於Data Pump要讀取主抽取進程保存的trail文件數據而且提供了對數據的操做功能如實現過濾、運算等複雜的工做,因此在讀取後必須先對原數據進行解密再處理,最後再次加密發送到目標端; DECRYPTTRAIL 定義將要解密的文件的加密類型和加密key(KEYNAME); ENCRYPTTRAIL 定義最終處理後的數據加密類型和加密key(KEYNAME); 注意:解密類型和keyname必須和主進程配置的相同。 固然 若是僅僅只是投遞 沒有過濾運算等工做 能夠不須要解密再加密
1.9源端開啓投遞進程
start pumprate GGSCI (WIN-T5DNTIITL4R) 43> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXTRATE 00:00:00 00:00:02 EXTRACT RUNNING PUMPRATE 00:00:00 00:00:00
####2. 目標端操做
2.1 建立祕鑰文件
在ogg目錄下d:\GoldenGate\gg>建立 ENCKEYS文件(注意:沒有後綴名),文件內容:
key_repr 0x91BFD764AE5979206A20FB795D951D7F112DB138B5926B60
在目標端的祕鑰存放文件中添加解密的key信息. 注意這裏的key_repr和源端的pump進程的keyname 必須一致,不然replicat進程沒法解析pump進程傳遞過來的隊列文件
2.2 安裝 GoldenGate
目錄 D:\GoldenGate\gg\ 下 cmd 運行 ggsci CREATE SUBDIRS exit
2.3 安裝服務,配置全局文件
D:\GoldenGate\gg\ ggsci --編輯全局文件 edit params ./GLOBALS 輸入一下內容: MGRSERVNAME mgrtarget --安裝服務 cd D:\GoldenGate\gg\ install ADDSERVICE AUTOSTART sc query mgrsouce ggsci dblogin sourcedb dbxxxx,userid gg01,password xxxxxxxx
2.4 目標數據庫配置mgr,啓動manager進程
D:\GoldenGate\gg\ ggsci GGSCI>EDIT PARAMS MGR --GoldenGate主進程端口號 PORT 8001 --GoldenGate爲進程間通信動態分配的端口段,注意這裏若是分配的端口段少於extract-replicat進程對的話,會致使部分進程因通信失敗而出錯。 DYNAMICPORTLIST 8001-8020 -- 指定Extract\Replicat進程的自動重啓(每次嘗試時間間隔爲5秒,最多嘗試5次) AUTORESTART ER *, WAITMINUTES 5, RETRIES 5 -- 自動回收舊的捕獲文件 PURGEOLDEXTRACTS D:\GoldenGate\GG\dirdat\* ,usecheckpoints,minkeepdays 10 --查看mgr info mgr --開啓mgr start mgr --新建檢查電錶和全局配置文件 --配置全局文件新增checkpointtable 屬性 GGSCI>edit params ./GLOBALS CHECKPOINTTABLE dbo.checkpointtable exit --添加checkpointtable表 ggsci GGSCI>dblogin sourcedb 184, userid gg01, password ggpassword01 GGSCI>ADD CHECKPOINTTABLE dbo.checkpointtable
2.5配置目標端replicat進程
GGSCI>ADD replicat reprate EXTTRAIL D:\GoldenGate\gg\dirdat\ex, CHECKPOINTTABLE dbo.checkpointtable,begin now GGSCI>alter replicat reprate , begin 2017-03-29 06:00:00 ---編輯replicat進程參數文件並啓動replicat進程 GGSCI>edit param reprate replicat reprate dboptions nolimitrows batchsql OPSPERBATCH 2000 targetdb 184,userid gg01,password ggpassword01 assumetargetdefs handlecollisions reperror default,discard numfiles 5000 DISCARDFILE D:\GoldenGate\gg\dirrpt\rt.dsc,append,megabytes 100 gettruncates wildcardresolve dynamic DECRYPTTRAIL AES192 KEYNAME key_repr --過濾delete,update IGNOREDELETES IGNOREUPDATES map dbo.u_test target dbo.u_test;
####3. 驗證