在上篇在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