sql怎樣跨資料庫查詢,sql怎樣跨資料庫查詢oracle

2021-08-14 09:14:37 字數 3299 閱讀 7201

1樓:素噶人所謂兒童

使用dblink。

例如:當前使用的資料庫是orcl1

要查詢的資料庫是orcl2的scott使用者的表。

create public database link  orcl2_scott connect to scott identified by tiger using '(description =(address_list =(address =(protocol = tcp)(host = 192.168.21.

2)(port = 1521)))(connect_data =(sid = orcl2)))'; 其中orcl2_scott是你建立的dblink名字,orcl2是遠端資料庫的例項名,scott/tiger是登入到遠端資料庫的使用者/密碼。然後在本地資料庫中通過dblink訪問遠端資料庫'orcl2'中scott.emp表,sql語句如下所示  select * from scott.

emp@orcl2_scott;

2樓:匿名使用者

假定您現在擁有一個以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中。為了避免部分讀者產生混淆,特此說明。

3樓:匿名使用者

配置本地資料庫伺服器的tnsnames.ora檔案

$vi $oracle_home/network/admin/tnsnames.ora

新增如下行,其中dblink為連線名(可自定義),host和port為資料庫偵聽的ip及埠,service_name為資料庫的sid,

mediadblink =

(description =

(address_list =

(address = (protocol = tcp)(host = 10.0.0.1)(port = 1521))

) (connect_data =

(service_name = db)

) )2.登入到本地資料庫,建立database link

執行如下查詢語句,其中mediadb為database link名(可自定義),mediadblink為先前在tnsnames.ora中定義的連線名,

dbuser為使用者名稱,password為密碼

-- create database link

create database link mediadb

connect to dbuser identified by password

using 'mediadblink';

注意:這裡不會驗證使用者名稱密碼的正確性

3.使用連結的資料庫

3.1 查詢、刪除和插入資料和操作本地的資料庫是一樣的,只不過表名需要寫成「表名@database link名」,如

select * from table_name@mediadb ;

4樓:匿名使用者

建立資料庫連結就可以了

如何用sql查詢oracle資料庫

5樓:

-- 查詢你 當前使用者下,有哪些表

select * from user_tables-- 查詢你 當前使用者下, 可以

訪問哪些表 [也就是訪問自專己 和 其他使用者的]select * from all_tables-- 查詢當屬前資料庫所有的表, 需要你有 dba 的許可權select * from dba_tables

sql資料庫連線不上,SQL資料庫連線不上

sql server 無法啟動並顯示錯誤 18456 症狀sql server 服務無法啟動,同時您可能會在 windows 事件檢視器中看到以下錯誤資訊 sqlserveragent could not be started reason unable to connect to server s...

sql資料庫問題

select from dbo.sys object where id in select id from sys column where column name c checkturn 似乎是這麼查,具體的欄位可能有出入!表名從 sys object表來,欄位從 sys column表來。通過查...

SQL觸發器問題(資料庫),SQL資料庫觸發器問題求解,建立觸發器後,怎麼操作

你確定是用觸發器嗎?reference就是引用,用於在建立資料表的時候主外來鍵關聯的。sql資料庫觸發器問題求解,建立觸發器後,怎麼操作 建立觸發器後,可以在表中插入或刪除修改一些資料,看看觸發器能否正常工作,是否達到預期的效果。sql 資料庫觸發器生效問題,高手急救 你的觸發器是after觸發還是...