當前位置:成語大全網 - 新華字典 - sql怎樣跨數據庫查詢oracle

sql怎樣跨數據庫查詢oracle

假定您現在擁有壹個以Microsoft.NET為架構的網絡訂購系統,但是品管維護系統卻仍然使用壹套舊式的Oracle數據庫應用程序。當您的顧客在產品保固期間下了產品更換之類的訂單,則該筆訂單將不收取任何費用。此時您需要從Oracle數據庫得到實時的查詢結果。借著建立連結服務器的方式(linkedServer),您將可以從SQLServer實時查詢出位於Oracle數據庫的顧客資料,找出誰是您既有的客戶。

當您的資料分散在不同的SQLServer數據庫時,藉由連結服務器可讓您執行跨服務器之分布式查詢。當所有的數據庫服務器都是SQLServer,則連結服務器的設定十分容易,而且在SQLServer線上手冊中就涵蓋了您所需要了解的所有事項。然而,當部分資料是放在Oracle數據庫服務器的時候,這就可能帶給您許多挑戰。舉例來說,光是設定連結服務器就不是壹件容易的事。您必須了解到:即是您要在SQLServer的EnterpriseManager設定壹個Oracle連結服務器,這臺SQLServer對Oracle來說就是壹個客戶端。所以您必須在SQLServer所在的服務器成功地安裝並組態Oracle之客戶端軟件。因為Oracle提供的產品只支持Oracle8以後的數據庫,所以我假設您正在使用的都是Oracle8以後的數據庫。在OracleNet8函式庫則提供了SQLServer所需要的客戶端軟件。

設定連接服務器時是利用Microsoft所提供的OLEDB ProviderforOracle,使用的Oracle網絡函式庫為SQL*Net2.3.3.0.4或是以後的版本,不過這是Oracle7.3數據庫所提供的。換句話說,要設定Oracle數據庫為SQLServer的連接服務器時,Oracle數據庫只要是7.3.3.4以後的版本,並搭配適當的SQL*Net或是Net8函式庫即可。

在Oracle數據庫中,壹個schema即代表著SQLServer專家們所熟知的單壹數據庫(譯者註2)。連接至Oracle數據庫時,您必須提供schema名稱、密碼以及主機聯機字符串(hoststring)。每壹個特定的Oracle帳戶都擁有壹個Oracleschema,而且只能有壹個schema。所以schema名稱其實就等於該schema擁有者的帳戶名稱。您可以查詢Oracle的資料字典(Datadictionary)以得到更多有關schema的內容。

至於Oracle聯機字符串又可稱為服務名稱(servicename)或是系統識別資料(SystenIdentifier,SID)。我們所謂的SQLServer數據庫個體(instance)在Oracle則稱為數據庫(database)。所以安裝OracleServer時,安裝程序OracleUniversalInstaller(為壹個圖形接口之安裝程序,與SQLServer的Setup程序類似)將會詢問您SID名稱為何,以作為Oracle數據庫之名稱。

這個部分原作者所提到schema的解釋有點問題。Oracleschema可視為同壹個使用者所擁有的所有數據庫對象(schemaobjects)之集合。舉例來說,使用者scott所建立的EMPtable其完整名稱為SCOTT.EMP,而SCOTT就是EMP的schema名稱。所以schemaname其實就是壹個Oracle數據庫之使用者帳號。但是絕對不能拿來跟數據庫相提並論!因為SQLServer的數據庫架構包含了datafiles與logfiles,但是Oracle的schemaobjects只存在於tablespace中。為了避免部分讀者產生混淆,特此說明。