2015-09-16 40 views
1

我有一個Oracle實例,它擁有許多不同的數據庫,我想跨所有實例進行查詢,因爲其他一些數據庫包含相關信息。我如何設置查詢來連接到更多的一個實例作爲我的SELECT語句的一部分。跨兩個實例的查詢

我正在使用Oracle SQL Developer,如果有幫助的話。

+2

[數據庫鏈接](http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm)和union語句。 '從all_DB_LINKS中選擇*;'列出您有權訪問的現有鏈接。 – xQbert

+2

您使用的是哪個版本的Oracle?除非你正在討論帶有多個可插拔數據庫的12.1實例,否則這個問題並沒有多大意義(至少在我們使用「實例」和「數據庫」的Oracle定義時)並不合適。我猜你在一個數據庫中有多個模式,或者你有多個數據庫實例。運行上述查詢返回0結果 –

+0

,我會讀取提供的鏈接。 – Boardman411

回答

1

在Oracle 12.1之前,Oracle實例與Oracle數據庫之間的關係爲1比1.單個實例最多可容納1個數據庫,儘管單個服務器可能託管多個實例。但是,單個數據庫可能有多個模式,每個模式可以單獨或合作主持一個或多個數據庫應用程序。

通過數據庫鏈接可以從一個Oracle實例訪問另一個實例。數據庫鏈接可以是公有或私有,並且可以與類似這樣的命令(other options exist)創建:

CREATE [PUBLIC] DATABASE LINK LINK_NAME 
CONNECT TO SOME_SCHEMA 
IDENTIFIED BY SOME_PASSWORD 
USING 'SOME_SERVICE_NAME'; 

這樣的數據庫鏈接將通過附加鏈接名稱的使用來引用遠程實例DB對象與對象參照在(@)符號,例如:

SELECT * FROM [SCHEMA.][email protected]_NAME; 

上述選擇將返回數據提供(在上述創建分貝鏈路語句SOME_SCHEMA)的DB鏈路相關聯的遠程模式具有足夠的特權來選擇來自引用的遠程模式。

+0

「Oracle實例和Oracle數據庫之間的關係爲1比1」,多對一,包含Oracle RAC。 –

+0

謝謝,這些信息非常有幫助 – Boardman411