当模式拥有同名的私有DBLink时,是否明确引用公共DBLink?

4
我正在进行一个迁移项目,需要将多个Oracle数据库模式导入到现有数据库中。这个需求引发了一个有趣的冲突,我现在有两个同名的dblinks
  • 一个是使用账户A访问Foobar数据库的私有dblink
  • 另一个是访问相同Foobar数据库的公共dblink,它使用账户B进行访问

Global Names设置为true,所以我不能更改这些dblinks的名称。


我已经通过试错发现,当登录到拥有私有 dblink 的模式时,以下操作可行:

SELECT * 
FROM table@foobar;

将引用私有的 dblink 而不是公共的。但对于需要账户 B 权限的情况,我无法找到如何明确引用公共的 dblink

有人知道我可以使用什么语法来引用公共的 @foobar 吗?


你能为其中一个dblink创建一个独特的同义词吗? - kevinskio
1个回答

1

来自 Oracle 文档。

Oracle 首先在您自己的模式中搜索具有与语句中数据库链接相同名称的私有数据库链接。然后,如有必要,它会搜索具有相同名称的公共数据库链接。

我认为这种情况无法改变。至少我没有找到相关的文档或解释。您可以创建公共同义词,但仅适用于需要访问 B 特定对象的情况。不能为整个数据库链接创建同义词。

如果您将会话级别的 global names 更改为 False 并创建一个具有其他无效链接名称的新链接,那么这样做是否更容易呢?如果仅在会话级别更改 global names,则只有该会话才能使用新链接。


感谢这个引语...在这里添加了你获取它的链接:https://docs.oracle.com/cd/B12037_01/server.101/b10759/sql_elements009.htm - user2858650
从我所看到的情况来看,我必须同意你的评估。看起来我需要一个解决方法来访问两个DBLinks。谢谢! - user2858650

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接