我们有一个Oracle DBMS(11 g)和以下配置:
- DB用户“MYUSER”
- 两个模式“MYUSER”和“SCHEMA_B”
- 用户“MYUSER”可以访问“SCHEMA_B”,并对其表具有READ权限
- 位于“SCHEMA_B”中的公共DB链接“DB_LINK”
- 当直接使用DB用户“SCHEMA_B”时,DB_LINK正在工作
问题:当以“MYUSER”登录时,使用“SCHEMA_B”的DB链接访问表的正确语法是什么?有可能这样做吗?
我已经尝试了几个星座,这一切都没有工作:
select * from dual@"DB_LINK"
select * from dual@"SCHEMA_B"."DB_LINK"
select * from dual@SCHEMA_B."DB_LINK"
select * from dual@SCHEMA_B.DB_LINK
select * from SCHEMA_B.dual@DB_LINK
select * from "SCHEMA_B".dual@DB_LINK
我收到的错误消息是:ORA-02019. 00000 -“未找到远程数据库的连接描述”
感谢您的任何建议!
3条答案
按热度按时间5gfr0r5j1#
我不认为在多个用户之间共享数据库链接是可能的,但不是所有用户。它们可以是私有的(仅针对一个用户)或公共的(针对所有用户)。
一个很好的解决方法是在SCHEMA_B中创建一个视图,该视图公开您希望通过数据库链接访问的表。这还将给予您能够很好地控制允许谁从数据库链接中进行选择,因为您可以控制对视图的访问。
这样做:
jdg4fx2g2#
我遇到了同样的问题,我使用了上面提供的解决方案-我放弃了同义词,创建了一个与同义词同名的视图。它有一个选择使用dblink,并给予GRANT SELECT到其他模式它工作得很好。
ykejflvf3#
您也可以在SCHEMA B中创建一个指向dblink query的视图。当然,你需要一些特权,但它可以解决你的问题。查看下面的视图脚本:
现在您可以从SCHEMA_B.mytable_view中选择数据。