当schema拥有同名的私有时,显式引用公共DBLink?

时间:2015-12-15 19:51:54

标签: sql oracle public dblink

我正在进行一个迁移项目,需要将几个Oracle数据库模式导入到现有数据库中。这个要求带来了一个有趣的冲突,我现在有两个dblinks具有相同的名称:

  • 其中一个私有 dblink使用帐户A访问Foobar数据库
  • 另一个是公开 dblink到同一个Foobar数据库,该数据库使用帐户B进行访问

Global Names设置为true,因此我无法更改这些dblinks的名称。

我已经通过反复试验找出了在签署拥有以下私有dblink的架构时:

SELECT * 
FROM table@foobar;

将引用私有dblink而不是公共私有B。但是,对于我需要帐户dblink权限的情况,我无法弄清楚如何明确引用公开@foobar

有没有人知道我可以用来引用公共{{1}}的语法?

1 个答案:

答案 0 :(得分:1)

来自Oracle文档。

  

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

我不认为这可以以任何方式改变。不是我在文档中知道或发现的。您可以创建公共同义词,但只有在需要使用B特定对象进行访问时才能使用。无法为整个数据库链接创建同义词。

在会话级别上将global names更改为False并使用其他无效的链接名称创建指向B的新链接会更容易。如果您在会话级别更改global names,则只允许该会话使用新链接。