2012-02-21 61 views
5

我在sqldeveloper中有不同表的2個連接。來自sqldeveloper中不同oracle連接的查詢

讓我們說:

ConnectionA與表:A,B,C ConnectionB與表:d,E,F

現在我想有一個查詢,看起來像這樣:

從A aa,D dd選擇aa.name,dd.id ;

我該怎麼做?

+2

表格不是連接特定的。也許你的意思是模式? – 2012-02-21 15:01:14

+0

在sqldeveloper中,您可以創建具有自己表的連接 – user999379 2012-02-21 15:04:29

+4

@ user999379 - 連接沒有表。連接允許您以擁有特定對象集合(模式)的特定用戶身份登錄到特定數據庫。連接不擁有任何對象。 – 2012-02-21 15:06:07

回答

9

如果要使用單個SQL語句在兩個不同數據庫中查詢對象,則需要在兩個數據庫之間創建數據庫鏈接。數據庫鏈接是駐留在數據庫中並獨立於查詢工具的對象。在數據庫中的,例如,您可以創建數據庫鏈接

CREATE DATABASE LINK to_b 
    CONNECT TO username IDENTIFIED BY password 
    USING tns_alias_on_a_pointing_to_b 

然後當你連接到A,你可以不喜歡

SELECT aa.name, dd.id 
    FROM a aa, 
     [email protected]_b dd 
WHERE aa.some_key = dd.some_key 
+0

我得到這個錯誤:SQL錯誤:ORA-12154:TNS:無法解析指定的連接標識 – user999379 2012-02-21 15:44:19

+0

@ user999379 - 當我運行SELECT語句時,你會得到這個錯誤嗎?在創建數據庫鏈接時,TNS別名需要存在於數據庫A上,並且需要指向數據庫B.指向B的A上的TNS別名可能與本地系統中定義的TNS別名不同(特別是如果您使用本地命名和本地tnsnames.ora文件)。 – 2012-02-21 15:51:37

+1

我們有一個「實時」數據庫和一個運行在同一個Oracle數據庫服務器上的「演示」數據庫。它們都設置在相同的tnsnames.ora文件中。所以對我來說,就像在我的實時連接下執行這個語句一樣簡單:'CREATE DATABASE LINK demodb USING'demodb';'demodb是我們演示數據庫在tnsnames.ora中的SID。現在,我可以通過在表名尾添加@demodb來查詢我的活動數據庫連接中的演示數據庫表。 – Baodad 2013-06-21 15:50:57