是可以的,方法很多。我就說幾種比較常用的方法吧。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了晉城免費(fèi)建站歡迎大家使用!
1、在程序中實(shí)現(xiàn):如 java 語(yǔ)言, 使用JDBC在B上連接C的數(shù)據(jù)庫(kù).需要用到如下參數(shù)
Driver : oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:C的iP:1521:orcl
username : 連接數(shù)據(jù)庫(kù)的用戶名
password: 密碼
2、在B上使用工具 如(PLSQL Developer )
先在B上使用 oracle 的 net configuration assistant 工具(安裝完ORACLE后就有)配置C的數(shù)據(jù)庫(kù)連接,然后用 PLSQL Developer 連接就可以了 注意 數(shù)據(jù)庫(kù)這一欄要填剛才配置的別名 不是本地的數(shù)據(jù)庫(kù)名
第一就是優(yōu)化網(wǎng)絡(luò),如果網(wǎng)絡(luò)沒問題那就沒有別的辦法,只能從查詢語(yǔ)句上優(yōu)化。
因?yàn)槟憧鑾?kù)查詢時(shí)間消耗=在其他庫(kù)上面執(zhí)行查詢的時(shí)間+網(wǎng)絡(luò)傳輸時(shí)間。通常網(wǎng)絡(luò)不會(huì)有問題,所以只能優(yōu)化查詢語(yǔ)句
在ORACLE里A庫(kù)里建立一個(gè)同義詞可把B庫(kù)的X 表映射到A庫(kù)。這樣A庫(kù)就當(dāng)本庫(kù)的表(虛擬式)使用。
Oracle的同義詞(synonyms)從字面上理解就是別名的意思,和試圖的功能類似,就是一種映射關(guān)系。本文介紹如何創(chuàng)建同義詞語(yǔ)句,刪除同義詞以及查看同義詞語(yǔ)句。
oracle的同義詞總結(jié):
從字面上理解就是別名的意思,和試圖的功能類似。就是一種映射關(guān)系。
1.創(chuàng)建同義詞語(yǔ)句:
create public synonym table_name for user.table_name;
其中第一個(gè)user_table和第二個(gè)user_table可以不一樣。
此外如果要?jiǎng)?chuàng)建一個(gè)遠(yuǎn)程的數(shù)據(jù)庫(kù)上的某張表的同義詞,需要先創(chuàng)建一個(gè)Database Link(數(shù)據(jù)庫(kù)連接)來擴(kuò)展訪問,然后在使用如下語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)同義詞:create synonym table_name for table_name@DB_Link;
當(dāng)然,你可能需要在user用戶中給當(dāng)前用戶(user2)授權(quán): grant select/delete/update on user2
假定您現(xiàn)在擁有一個(gè)以Microsoft.NET為架構(gòu)的網(wǎng)絡(luò)訂購(gòu)系統(tǒng),但是品管維護(hù)系統(tǒng)卻仍然使用一套舊式的Oracle數(shù)據(jù)庫(kù)應(yīng)用程序。當(dāng)您的顧客在產(chǎn)品保固期間下了產(chǎn)品更換之類的訂單,則該筆訂單將不收取任何費(fèi)用。此時(shí)您需要從Oracle數(shù)據(jù)庫(kù)得到實(shí)時(shí)的查詢結(jié)果。借著建立連結(jié)服務(wù)器的方式(linkedServer),您將可以從SQLServer實(shí)時(shí)查詢出位于Oracle數(shù)據(jù)庫(kù)的顧客資料,找出誰(shuí)是您既有的客戶。
當(dāng)您的資料分散在不同的SQLServer數(shù)據(jù)庫(kù)時(shí),藉由連結(jié)服務(wù)器可讓您執(zhí)行跨服務(wù)器之分布式查詢。當(dāng)所有的數(shù)據(jù)庫(kù)服務(wù)器都是SQLServer,則連結(jié)服務(wù)器的設(shè)定十分容易,而且在SQLServer線上手冊(cè)中就涵蓋了您所需要了解的所有事項(xiàng)。然而,當(dāng)部分資料是放在Oracle數(shù)據(jù)庫(kù)服務(wù)器的時(shí)候,這就可能帶給您許多挑戰(zhàn)。舉例來說,光是設(shè)定連結(jié)服務(wù)器就不是一件容易的事。您必須了解到:即是您要在SQLServer的EnterpriseManager設(shè)定一個(gè)Oracle連結(jié)服務(wù)器,這臺(tái)SQLServer對(duì)Oracle來說就是一個(gè)客戶端。所以您必須在SQLServer所在的服務(wù)器成功地安裝并組態(tài)Oracle之客戶端軟件。因?yàn)镺racle提供的產(chǎn)品只支持Oracle8以后的數(shù)據(jù)庫(kù),所以我假設(shè)您正在使用的都是Oracle8以后的數(shù)據(jù)庫(kù)。在OracleNet8函式庫(kù)則提供了SQLServer所需要的客戶端軟件。
設(shè)定連接服務(wù)器時(shí)是利用Microsoft所提供的OLEDB ProviderforOracle,使用的Oracle網(wǎng)絡(luò)函式庫(kù)為SQL*Net2.3.3.0.4或是以后的版本,不過這是Oracle7.3數(shù)據(jù)庫(kù)所提供的。換句話說,要設(shè)定Oracle數(shù)據(jù)庫(kù)為SQLServer的連接服務(wù)器時(shí),Oracle數(shù)據(jù)庫(kù)只要是7.3.3.4以后的版本,并搭配適當(dāng)?shù)腟QL*Net或是Net8函式庫(kù)即可。
在Oracle數(shù)據(jù)庫(kù)中,一個(gè)schema即代表著SQLServer專家們所熟知的單一數(shù)據(jù)庫(kù)(譯者注2)。連接至Oracle數(shù)據(jù)庫(kù)時(shí),您必須提供schema名稱、密碼以及主機(jī)聯(lián)機(jī)字符串(hoststring)。每一個(gè)特定的Oracle帳戶都擁有一個(gè)Oracleschema,而且只能有一個(gè)schema。所以schema名稱其實(shí)就等于該schema擁有者的帳戶名稱。您可以查詢Oracle的資料字典(Datadictionary)以得到更多有關(guān)schema的內(nèi)容。
至于Oracle聯(lián)機(jī)字符串又可稱為服務(wù)名稱(servicename)或是系統(tǒng)識(shí)別資料(SystenIdentifier,SID)。我們所謂的SQLServer數(shù)據(jù)庫(kù)個(gè)體(instance)在Oracle則稱為數(shù)據(jù)庫(kù)(database)。所以安裝OracleServer時(shí),安裝程序OracleUniversalInstaller(為一個(gè)圖形接口之安裝程序,與SQLServer的Setup程序類似)將會(huì)詢問您SID名稱為何,以作為Oracle數(shù)據(jù)庫(kù)之名稱。
這個(gè)部分原作者所提到schema的解釋有點(diǎn)問題。Oracleschema可視為同一個(gè)使用者所擁有的所有數(shù)據(jù)庫(kù)對(duì)象(schemaobjects)之集合。舉例來說,使用者scott所建立的EMPtable其完整名稱為SCOTT.EMP,而SCOTT就是EMP的schema名稱。所以schemaname其實(shí)就是一個(gè)Oracle數(shù)據(jù)庫(kù)之使用者帳號(hào)。但是絕對(duì)不能拿來跟數(shù)據(jù)庫(kù)相提并論!因?yàn)镾QLServer的數(shù)據(jù)庫(kù)架構(gòu)包含了datafiles與logfiles,但是Oracle的schemaobjects只存在于tablespace中。為了避免部分讀者產(chǎn)生混淆,特此說明。