[摘要] 本文詳細研究分析了SQL Server 2005與Oracle之間數據事務復制、合并復制等類型,及其具體配置實現。這為異構數據源之間的數據交換提供了切實可行的解決方案。
[關鍵詞] SQL Server 2005 Oracle 復制
SQL Server 2005是微軟的新一代數據管理和分析解決方案,為企業級數據和分析應用程序提供了更強的擴展性、可用性和安全性。Oracle 是以高級結構化查詢語言(SQL)為基礎的大型關系數據庫,是用方便邏輯管理的語言操縱大量有規律數據的集合。這兩種數據庫產品是目前最流行的客戶/服務器(CLIENT/SERVER)體系結構的數據庫,Oracle多用于后臺聯機業務處理,SQL Server 以其在商業智能的優勢多用在數據分析中。我們在SQL Server 2005和Oracle數據庫具體工程項目的系統管理過程中,對二者之間的數據復制技術進行了詳細探討。
一、SQL Server 2005與Oracle之間數據復制模型
1.SQL Server 2005復制類型
SQL Server 2005的復制類型主要分以下幾種類型:快照復制(Snapshot Replication);事務復制(Transaction Replication);合并復制(Merge Replication). 合并復制是將各種數據合并一起操作,事務復制和合并復制是常用的數據復制類型是常用的,這兩種復制都是在快照復制的基礎上進行的操作。除此之外,還有可更新的事務復制(Transaction replication with update)和點對點的復制(Peer to Peer)。可更新的事務復制就是發布者將要發布的表發布以后,定位者得到有關發布者表的變化,同樣也可以在定位者的表中作一些修改,這些修改同時會更新到原有表里面,這類似于兩臺數據庫服務器之間的數據雙向復制。點對點的復制(Peer to Peer)結構是將一臺數據庫服務器的數據發布以后,通過配置可以使多個數據庫的數據是同步的,那么在任何一個點的修改都可以很快的發布到其他點上。但是對Oracle發布者來說,Oracle不能作為可更新事務復制、點對點復制和合并復制的發布者。那么SQL Server 2005與Oracle之間只能采用事務復制和快照復制。
2.SQL Server 2005在與Oracle進行數據復制時服務器角色
在整個復制體系中,需要將不同的服務器類型指定到不同角色中,那么服務器角色分為三種:發布者(Publisher)、分發者(Distributor)、訂閱者(Subscriber)。Publisher就是誰將數據、表作為發布者,也就是提供數據和相應表的數據源。SQL Server可以作為發布者的,而對于Oracle來說只能是要求8.0.5及其以上版本才能作為數據發布者,這對無論架構到任何硬件和操作系統環境都可以作為發布者。分發者Distributor,只能是由SQL Server 2005擔當此角色,就是發布者將改變的數據和表提供給分發者。訂閱者Subscriber,SQL Server在支持異構數據源復制的時候上,對主流數據庫給予了廣泛的考慮。訂閱者可以是SQL Serve、 Oracle、 IBM DB2, 如果發布者是Oracle, 可以將SQL Server作為復制解決方案中的一種工具,可以將Oracle中的數據復制給DB2,或者給其他的SQL Server、Oracle數據庫. Oracle數據庫中數據表的復制只支持Oracle 到Oracle的復制。SQL Server就可以支持異構數據源的復制,通過不同的服務器角色,有兩種路徑:一是可以將SQL Server 的數據復制到Oracle/DB2/SQL Server;二是還可以將Oracle的數據復制到Oracle/IBM DB2/SQL Server中。SQL Server 2005是不支持DB2作為發布者的,但DB2可以作為一個訂閱者。通過不同服務器角色,可以有不同的復制模型,異構數據集成圖就是直觀地說明了其中可以實現的復制模型。
集成異構數據圖(Integrating heterogeneous data)
往往在一些大型業務應用環境中,業務處理的核心數據庫往往會選擇則小型機,并在其上使用Oracle數據庫(其以并發處理可靠性較好),后臺還會選擇SQL Server作為一些業務分析、報表處理等其他應用(SQL Server在商業智能分析上技術較為領先)。如果將前臺數據放到后臺分析處理,第一種方案是可以將數據以批量的方式從Oracle中讀出來,經過相應類型的轉換,導入到SQL Server數據庫中,但這種方案不能做到數據的實時性;另一種就是利用SQL Server中的復制機制(這個開銷也不會太大),在Oracle中進行的讀寫、更新數據操作會被記錄下來,那么更改過的數據經過SQL Server向外傳播,SQLServer中的復制就起到一個媒介的作用,Oracle是發布者,SQL Server就是分發者,這種方案可以保證在數據處理實時性比較高。
在使用Oracle作為發布者時,有先決條件:發布的表有條件要求的,首先是要在SQL Server上指定一個連接,連接到Oracle,并且支持身份認證模式,即需要用戶名和密碼,且用戶也需要一定的權限,能創建表和其他的觸發器等,還需要發布的表有select權限,另外這個發布的表要有主鍵;其次是數據類型的要求,對于用戶自定義的類型,是不支持的,沒辦法進行數據類型的轉換,Oracle就要轉換為SQL Sever 可識別的類型。從服務器角色方面考慮,作Oracle不需什么配置,但要在SQL Server上裝Oracle Client,通過Oracle Client 連接到Oracle服務上.
二、SQL Server 2005與Oracle之間數據復制配置
SQL Server 2005與Oracle之間數據復制配置首先是Oracle發布(Configuration for Oracle Publish),其中又包括在Configuration on Oracle過程要執行Oracle 管理腳本賦予一些權限(Execute oracle admin script to grant some permission),然后選擇事務復制(Transaction Replication)的具體模型。接下來要配置Oracle訂閱(Configuration for Oracle Subscriber)配置兩種不同的復制模型,其實現的原理是不一樣的,發布者發布數據表,分發者根據不同的數據源進行數據的插入操作。雖然Oracle、 SQL Server都支持SQL語句,但是SQL語句的實現是有區別的,特別是數據的導入不同的。
在SQL Server 2005與Oracle之間數據復制配置,并進行數據復制過程中,SQL Server 2005提供了復制監視器(Monitor Replication)可以跟蹤復制,并幫助分析、查找復制中可能出現的問題,可以監視復制中發布者、分布者和訂閱者的信息。另外SQL Server 2005還提供了一個Tracer token工具,可以測試延遲,因為延遲往往是評估一個方案的優劣的指標。
通過對SQL Server 2005與Oracle 之間數據復制模型及其實現的過程中,重要的是要考慮依據整個應用的實際環境,選擇合適的復制類型,從而考核是否滿足業務需求能否實現。
參考文獻:
[1]王偉羅四維:基于J2EE的銀行客戶信用評級系統研究與實現,計算機工程與設計,2007.7
[2]趙松濤:SQL Server 2005 系統管理實錄,電子工業出版社:北京,2006
[3]胡百敬姚致玫:SQL Server 2005數據庫開發詳解,電子工業出版社:北京,2006
[4]袁福慶:Oracle數據庫管理與維護手冊,人民郵電出版社:北京,2006