在上篇在SSIS 2012中使用CDC(數據變更捕獲)中,介紹了如何在SSIS 2012中使用CDC,本文在此基礎上介紹,如何通過Attunity提供的Change Data Capture Designer for Oracle實現對Oracle數據表的變更捕獲。同樣需要做一些准備工作:
1、配置Oracle數據庫為歸檔模式,並獲取瀏覽日志的指定權限;
/* -- =============================================
-- 修改Oracle屬性
---Generate By downmoon(邀月),3w@live.cn
-- ============================================= */
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; ALTER DATABASE ARCHIVELOG;
2、安裝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.msi
安裝的具體方法,請參考:
雙擊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位,那么麻煩在后面,呵呵。
正面相對就比較簡單了,兩步即可:
第一步:配置 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