1.分別建立鏈接對數據庫進行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用)
這種方案的優點就是簡單,各自寫各自的數據庫操作代碼,缺點就是不能將兩個數據庫中的表直接進行聯合查詢,鏈接Oracle的每臺機器必須安裝OracleClient才可以使用。
2.使用同義詞操作Oracle數據庫。
這種方法的具體操作我在以前的文章中已經寫清楚了,這樣做一來可以進行表的聯合查詢二來不需要每臺機器都安裝OracleClient,但是還是有一個缺點:效率低,比如對同義詞使用like去查找需要的數據,如果是直接連Oracle數據庫也許只要0.1秒就可以找到答案,但是用同義詞可能就要等10秒20秒或更久。原來SQLServer并不是直接把查詢語句傳遞給Oracle,讓Oracle執行操作,而是將所有數據都取到SQLServer服務器上,邊取數據邊分析,直到滿足查詢條件為止。其實這種數據放在兩個服務器上還有一個缺點就是一旦Oracle服務器宕機,即使我們這邊的所有服務器都是好的,那么我們的程序中用到Oracle數據的地方就無法使用。
3.直接鏈接Oracle數據庫+同義詞+作業+異常跳轉 方式。
這種方法具體講就是我們的程序直接用OLEDB(OracleClient)鏈接Oracle數據庫,同時SQLServer服務器也建立了同義詞指向Oracle,在SQLServer上建立作業,將同義詞中的數據拷貝到SQLServer服務器的表中。一旦Oracle宕機,程序中就會捕捉到異常,于是就使用SQLServer中的數據。這樣做比較復雜,需要一定的編程,效率也不是特別高,但是優點也是明細的,平時鏈接Oralce服務器,異常情況下鏈接SQLServer中的備份數據,保證了程序的正常運行。
4.直接編寫一個程序,以服務或自啟動方式一直運行,每隔一段時間將Oracle數據庫中的數據寫到SQLServer數據庫中。
這種方法就是編程復雜,具有很大難度。
5.利用SQLServer2005的復制功能將Oracle數據庫中的數據同步到SQLServer服務器中,程序只操作SQLServer,不鏈接Oracle數據庫。
這種方法不需要編寫任何代碼,由于只對SQLServer進行查詢,所以查詢效率高可以做多表鏈接,開發人員也不需要再裝OracleClient,也不用害怕Oracle服務器宕機導致我們的相關程序無法使用。優點倒是很多,那么有沒有缺點拉?缺點還是有的,主要是取得的數據不是實時的數據,Oracle那邊的數據更新了,我們這邊還有可能是老數據。
前面的四種方法我就不用多講了,這次主要是講第五種方法的具體實現:
1.安裝SQLServer復制功能。
在安裝SQLServer數據庫的時候選上“復制”,將“復制”功能安裝到服務器。微軟說如果第一次安裝的時候沒有裝,以后再想添加該功能只需要運行安裝程序將“復制”選上就可以了,不過說是這么說,我試了幾次都不行,我也不知道怎么回事,為了安裝上復制,所以將SQLServer卸載了,重新安裝!這種方法很笨,不過我實現想不出其他辦法了,希望高手指點。
2.設置Oracle服務器端的權限。
創建一個用于復制用的用戶,授予下列權限:
CREATE PUBLIC SYNONYM 和 DROP PUBLIC SYNONYM
CREATE PRO
CREATE SEQUENCE
CREATE SESSION
還必須直接為用戶授予下列權限(不是通過角色):
CREATE ANY TRIGGER。
CREATE TABLE
CREATE VIEW
同時該用戶還必須對要發布的表所在表空間有UNLIMIT
新聞熱點
疑難解答