我正在使用Oracle 11G。如何在select * from dbname.schemaname.table
之类的查询中提供dbname和模式名称。我想知道语法。
如果我编写查询select * from employees
并收到错误
表或视图不存在
我相信我必须将名称命名为dbname.schemaname.tablename
,但我不知道语法。有人可以帮忙吗?
答案 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;