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. jQuery——操作复选框(checkbox) attr checked不起作用

    这天用到jQuery功能,想实现一个简单的复选框动态全选或全不选,结果测试发现 attr(‘checked’,'checked’);与attr(‘checked’,true); 都不好使,要么第一次成 ...

  2. Struts01---入门小案例

    创建web项目    实现的效果! 用户点击页面不同的链接,后台调用不同的代码! 创建两个类实现共同的接口! public interface Action { String execute(); } ...

  3. Huffman编码实现文件的压缩与解压缩。

    以前没事的时候写的,c++写的,原理很简单,代码如下: #include <cstdio> #include <cstdlib> #include <iostream&g ...

  4. Java(Android)线程池妙用

    介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异步任务你还只是如下new T ...

  5. Arcgis for javascript map操作addLayer详解

    本节的内容很简单,说说Arcgis for Javascript里面map对象的addLayer方法.在for JS的API中,addLayer方法有两种,如下图: addLayer方法 在addLa ...

  6. 谈谈Java基础数据类型

    Java的基本数据类型 类型 意义 取值 boolean 布尔值 true或false byte 8位有符号整型 -128~127 short 16位有符号整型 -pow(2,15)~pow(2,15 ...

  7. C#调用EasyPusher推送到EasyDarwin流媒体服务器直播方案及示例代码整理

    博客一:转自:http://blog.csdn.net/u011039529/article/details/70832857 大家好,本人刚毕业程序猿一枚.受人所托,第一次写博客,如有错误之处敬请谅 ...

  8. Android 进阶16:IntentService 使用及源码解析

    It's time to start living the life you've only imagined. 读完本文你将了解: IntentService 简介 IntentService 源码 ...

  9. Wordpress在主题中自定义登陆页面并且禁用自带的登陆页面

    在使用Wordpress制作主题之后,不想要他自带的登陆页面以及地址. 1.新建一个用户页面来接管与登陆相关的动作 //在主题根目录下新建page-login.php,通过action获取用户动作,然 ...

  10. 你所不知道的 Java 之 HashCode

    之所以写HashCode,是因为平时我们总听到它.但你真的了解hashcode吗?它会在哪里使用?它应该怎样写? 相信阅读完本文,能让你看到不一样的hashcode. 使用hashcode的目的在于: ...