OGG for sqlserver engryption && insert/delete

1. 源端操作

1.1 获取key

作为数据库用户密码加密

d:\GoldenGate\gg>keygen 128 1
0xC6E1D0189BCF020DECDFF52DC23FCA39

作为抽取进程日志加密以及目投递进程加密的密钥

d:\GoldenGate\gg>keygen 192 1

0x0542696E32B8342A7E1EEF23CFC9F707C26D27726785C14A

1.2 创建秘钥文件

在ogg目录下d:\GoldenGate\gg>创建 ENCKEYS文件(注意:没有后缀名),文件内容:

 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.

创建测试表

 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 组

-- 基于日志方式,立即生效

 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. 验证

OGG for sqlserver engryption && insert/delete的更多相关文章

  1. sqlserver触发器insert,delete,update

    Create Trigger [dbo].[upemployee_kefyu_sale] on [dbo].[employee] for update as if update(FullName) b ...

  2. [LeetCode] Insert Delete GetRandom O(1) - Duplicates allowed 常数时间内插入删除和获得随机数 - 允许重复

    Design a data structure that supports all following operations in average O(1) time. Note: Duplicate ...

  3. [LeetCode] Insert Delete GetRandom O(1) 常数时间内插入删除和获得随机数

    Design a data structure that supports all following operations in average O(1) time. insert(val): In ...

  4. 带有OUTPUT的INSERT,DELETE,UPDATE

    原文地址:http://blog.sina.com.cn/s/blog_71460d950100nld2.html OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可 ...

  5. Use Select To Generate Any Insert/Delete/Update Statement

    If you don't have the permission to generate script according to an existing db, but you have the re ...

  6. LeetCode 380. Insert Delete GetRandom O(1)

    380. Insert Delete GetRandom O(1) Add to List Description Submission Solutions Total Accepted: 21771 ...

  7. sql server 带有OUTPUT的INSERT,DELETE,UPDATE

    原文:sql server 带有OUTPUT的INSERT,DELETE,UPDATE OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可以看作是"返回结果 ...

  8. 381. Insert Delete GetRandom O(1) - Duplicates allowed

    Design a data structure that supports all following operations in average O(1) time. Note: Duplicate ...

  9. SQL server触发器中 update insert delete 分别给写个例子被。

    SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...

随机推荐

  1. LoadRunner压力测试实际运用的使用方法

    LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具.通过以模拟上 千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个 企业架构进行测试. 方 ...

  2. Qt 出现“undefined reference to `vtable for”原因总结

    http://blog.csdn.net/chenlong12580/article/details/7431104

  3. (一)js概述

    1.    js:弱类型,动态类型,解释型的脚本语言. 2.    网景,布兰登艾奇,js和java没有关系,js的标准:ECMAscript. 3.    js组成:ECMAscript + Bom ...

  4. LINUX命令—让人喜爱的find

    FIND命令的让人喜爱的地方在于其后面跟着的 –exec  可以执行其他linux命令 这点太让人高兴了,不过他的结尾要带一个特殊的结构 {} \: 说说实例:

  5. SQLServer流水号自动生成

    最近给客户做生成条码的功能时,碰到个问题,需要根据数量自动生成流水号,然后加上客户指定的前缀,组合成条码. 折腾了一会,最后通过个存储过程实现. --@Prefix 指定前缀,@InitialVal ...

  6. 【JavsScript高级程序设计】学习笔记[1]

    1. 在HTML中使用javascript 在使用script嵌入脚本时,脚本内容不能包含'</script>'字符串(会被认为是结束的标志).可以通过转义字符解决('\') 默认scri ...

  7. HDU - 5088: Revenge of Nim II (问是否存在子集的异或为0)

    Nim is a mathematical game of strategy in which two players take turns removing objects from distinc ...

  8. 【POJ 3179】 Corral the Cows

    [题目链接] http://poj.org/problem?id=3179 [算法] 首先,我们发现答案是具有单调性的,也就是说,如果边长为C的正方形可以,那么比边长C大的正方形也可以,因此,可以二分 ...

  9. npm 私服工具verdaccio 安装配置试用

      1. 安装 npm install -g verdaccio 2. 启动 verdaccio // 界面显示信息 Verdaccio doesn't need superuser privileg ...

  10. PADS Logic 脚本的 Fields 一个对象记录

    PADS Logic 脚本的 Fields 一个对象记录 PADS Laogic 有一个非常棒的脚本功能,可以导出所以元件. 我目前是把脚本绑定到 Ctrl+S 上,在保存时自动导出 txt 文件,方 ...