如何使用位于不同架构中的DBLINK在Oracle中进行选择?
问题描述:
我们有一个Oracle DBMS(11克)和以下配置:如何使用位于不同架构中的DBLINK在Oracle中进行选择?
- 一个DB用户 “MYUSER”
- 双模式 “MYUSER” 和 “SCHEMA_B”
- 用户 “MYUSER” 可以访问“SCHEMA_B “并阅读其表的权限
- 公共DB链接‘DB_LINK’位于‘SCHEMA_B’
- 的DB_LINK使用数据库用户时工作‘SCHEMA_B’直接
问题:以“MYUSER”身份登录时,使用“SCHEMA_B”的数据库链接访问表的正确语法是什么?有没有可能这样做?
我已经尝试过几个星座,这都没有工作:
select * from [email protected]"DB_LINK"
select * from [email protected]"SCHEMA_B"."DB_LINK"
select * from [email protected]_B."DB_LINK"
select * from [email protected]_B.DB_LINK
select * from [email protected]_LINK
select * from "SCHEMA_B"[email protected]_LINK
我收到的错误消息是: ORA-02019。 00000 - “远程数据库未找到连接说明”
感谢您的任何建议!
答
我不认为有可能在多个用户之间共享数据库链接,但不是全部。它们要么是私人的(仅针对一个用户),要么是公共的(针对所有用户)。
解决此问题的一个好方法是在SCHEMA_B中创建一个视图,该视图公开要通过数据库链接访问的表。这也可以很好地控制谁可以从数据库链接中进行选择,因为您可以控制对视图的访问。
这样做:
create database link db_link... as before;
create view mytable_view as select * from [email protected]_link;
grant select on mytable_view to myuser;
向所有用户使用的“公共”指令共享一个数据库链接。 CREATE PUBLIC DATABASE LINK ... – Rusty1