2012-02-21 48 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