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