如何从正确的数据库和架构中进行选择?

时间:2017-05-04 15:21:11

标签: sql oracle11g

我正在使用Oracle 11G。如何在select * from dbname.schemaname.table之类的查询中提供dbname和模式名称。我想知道语法。

如果我编写查询select * from employees并收到错误

  

表或视图不存在

我相信我必须将名称命名为dbname.schemaname.tablename,但我不知道语法。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

首先,如果你想从另一个模式查询,你可以这样做:

select * from HR.Employees 

其中 HR 是架构的名称,您必须以任何方式将select权限授予从另一个架构读取的架构,或者将dba授予执行查询的架构,如此

grant dba to my_user;

其中 my_user 是您执行查询的用户。

如果你想从其他数据库中读取数据而不是你要连接的数据,你可以使用这样的数据库链接来实现:

    create database link "my_link"
 connect to "HR" identified by "hr"
 using '(DESCRIPTION =
       (ADDRESS_LIST =
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.200)(PORT = 1521))
       )
       (CONNECT_DATA =
         (SID = ORACLE)
       )
     )'
/

其中host是安装其他数据库的服务器,sid是数据库的名称。

然后像这样执行您的查询:

select * from employees@my_Link;

答案 1 :(得分:0)

创建公共SYNONYM到对象

CREATE OR REPLACE PUBLIC SYNONYM suppliers
FOR app.suppliers;
在SYNONYM之前

你的选择是:

select * from app.suppliers;
在SYNONYM之后

select * from suppliers;