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. LeetCode OJ:Spiral MatrixII(螺旋矩阵II)

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  2. iOS开发之最近开发遇到的问题总结

    1.Cannot create __weak reference in file using manual reference counting 解决办法: 点击工程-------->Build ...

  3. Creating a Game with CocosBuilder

    Creating a Game with CocosBuilder This tutorial aims to show how you can use CocosBuilder together w ...

  4. LeNet-5网络结构及训练参数计算

    经典神经网络诞生记: 1.LeNet,1998年 2.AlexNet,2012年 3.ZF-net,2013年 4.GoogleNet,2014年 5.VGG,2014年 6.ResNet,201 ...

  5. windows服务是如何被调用的?

    1.服务介绍 操作系统在启动的时候,会启动一些不需要用户交互的进程.这些进程被称为服务.当操作系统启动后它就自动被运行. 2.组成 服务程序.服务控制程序(SCP,service control pr ...

  6. ASP.NET中服务器控件的生命周期

    服务器控件的生命周期是创建服务器控件最重要的概念.作为开发人员,必须对服务器控件生命周期深刻理解.当然,这不是一朝一夕就可以做到的.对于学习控件开发技术的初学者,可以不必掌握得非常详细深入,只需对服务 ...

  7. LeetCode 366. Find Leaves of Binary Tree

    原题链接在这里:https://leetcode.com/problems/find-leaves-of-binary-tree/#/description 题目: Given a binary tr ...

  8. ubuntu14.04安装python3.7.1

    https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz python3.7.1 提示 ModuleNotFoundError: No modu ...

  9. 如何查看自己的laravel版本

    方法1: 使用php artisan --version ,只要能看懂这个命令的人一定已经具有初步的Laravel知识.再介绍一种不需要命令,直接去文件中去查看的方法. 方法2: 在项目文件中找ven ...

  10. Oracle 数据库备份还原(Expdp/impdp)记录

    最近公司将原数据库服务器切换.之前没整过这块,也是一堆的度娘.经过不停的摸索,终于成功了.现在将这份艰辛记录下来,方便自己以后查阅的同时,方便有类似需求的同学参考. 我们此次切换共分:ERP.LOS. ...