在上篇在SSIS 2012中使用CDC(数据变动捕获)中,介绍了如何在SSIS 2012中使用CDC,本文在此基础上介绍,如何经过Attunity提供的Change Data Capture Designer for Oracle实现对Oracle数据表的变动捕获。一样须要作一些准备工做:html
一、配置Oracle数据库为归档模式,并获取浏览日志的指定权限;sql
/* -- =============================================
-- 修改Oracle属性
---Generate By downmoon(邀月),3w@live.cn
-- ============================================= */
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER DATABASE ARCHIVELOG;
二、安装CDC Service Configuration and Designer 两个控制台。数据库
在SQL Server的安装源\Tools\AttunityCDCOracle\x64\1033下有两个安装文件,32位对应的路径为X86,1033为英语,2052为简体中文。D:\Tools\AttunityCDCOracle\x64\1033\AttunityOracleCdcDesigner.msi
D:\Tools\AttunityCDCOracle\x64\1033\AttunityOracleCdcService.msi
D:\Tools\AttunityCDCOracle\x86\1033\AttunityOracleCdcDesigner.msi
D:\Tools\AttunityCDCOracle\x86\1033\AttunityOracleCdcService.msiwindows
安装的具体方法,请参考:oracle
双击MSI便可安装,默认安装路径,64位在这里:C:\Program Files\Change Data Capture for Oracle by Attunity测试
若是没有安装源,能够在官网下载:http://www.microsoft.com/en-us/download/details.aspx?id=35580加密
注意:若是您的SQL Server 2012是64位,必须选择64位安装源,而若是你用的Oracle客户端是32位,那么麻烦在后面,呵呵。spa
正面相对就比较简单了,两步便可:设计
第一步:配置 CDC for Oracle 服务
在开始-Attunity Change Data Capture for Oracle>CDC Service Configuration,打开服务配置控制台:
prepare 一个本地的SQL Server实例,用于记录远程Oracle表的变化,若是你没有先Prepare数据库,系统会至关人性化的给出提示,完成后也是如此。
配置服务比较简单,最终以下图,注意:最后一行的Master Key用于加密存储的Oracle凭证。
至此,第一步服务配置完成,简单,是不?
第二步:设计 CDC for Oracle
在开始-Attunity Change Data Capture for Oracle>CDC Designer Configuration,打开设计配置控制台:
建立一个新实例,首先建立一个CDC Database名称为Oracle_CDC,这个位于SQL Server端,运行它便可。
下来,链接Oracle Source
出现上述状况,是由于我别的应用程序须要安装了一个Oracle 32位客户端,因而,悲剧出现了。
补救措施:安装一个绿色的Oracle 64位客户端:http://www.oracle.com/technetwork/topics/winx64soft-089540.html
下载,直接解压便可,本文中的Path路径有两个:
E:\Ora11\product\11.2.0\dbhome_1\bin;(Path路径中原32位客户端安装版路径)
E:\Ora11\Client12;E:\Ora11\product\11.2.0\dbhome_1\bin;(Path路径中现64位客户端绿色版路径,修改后)
而后从新在上述界面“Test connection”,成功!
你能够提早在Oracle中新建一个表,用于测试:
/* -- =============================================
-- 修改Oracle属性
---Generate By downmoon(邀月),3w@live.cn
-- ============================================= */
-- Create table Create table CDCTest01 ( TCode VARCHAR2(20) primary Key, TName VARCHAR2(500) ); Insert into CDCTest01 select '1','阳顶天' from dual union all select '2','张三丰' from dual;
建立后,你能够在后面一步,选中要捕获的表:
执行关于表的一些必要操做:
若是你没有作本文前的准备工做,将会收到以下错误:
补救措施后,以下:
下一步,设计完成。
你能够试着启动一下这个windows服务,十之八九第一次会收到这个错误:
其实,这是由于本机配置的64位客户端在注册表中存错了位置,修改成64位绿色客户端位置便可,原值为32位安装版的路径。
[HKEY_LOCAL_MACHINE\SOFTWARE\Oracle]
"Oracle_Home"="E:\\Ora11\\Client12"
修改后无需重启,从新Start服务,OK
咱们添加两个语句测试一下:
/* -- =============================================
-- 建立测试数据
---Generate By downmoon(邀月),3w@live.cn
-- ============================================= */
Insert into CDCTest01 select '3','金毛狮王' from dual; update CDCTest01 set TName='觉远' where TCode='1';
SQL Server端自动生成的表:
感谢您的阅读,但愿对你有所帮助!
本文参考:
http://www.attunity.com/products/attunity-cdc-ssis/oracle-cdc-for-ssis
http://www.microsoft.com/en-us/download/confirmation.aspx?id=35580
http://msdn.microsoft.com/zh-cn/library/dn175414%28v=sql.120%29.aspx
http://www.oracle.com/technetwork/topics/winx64soft-089540.html
http://technet.microsoft.com/en-us/library/ee470675%28v=sql.100%29.aspx
http://blogs.msdn.com/b/mattm/archive/2012/03/26/cdc-for-oracle-in-sql-server-2012.aspx
http://www.attunity.com/forums/microsoft-ssis-oracle-connector/error-failed-load-oci-dll-1308.html