如何使用位于不同架构中的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; 
+0

向所有用户使用的“公共”指令共享一个数据库链接。 CREATE PUBLIC DATABASE LINK ... – Rusty1