我正在进行一个迁移项目,需要将几个Oracle
数据库模式导入到现有数据库中。这个要求带来了一个有趣的冲突,我现在有两个dblinks
具有相同的名称:
dblink
使用帐户A
访问Foobar
数据库dblink
到同一个Foobar
数据库,该数据库使用帐户B
进行访问 Global Names
设置为true,因此我无法更改这些dblinks
的名称。
我已经通过反复试验找出了在签署拥有以下私有dblink
的架构时:
SELECT *
FROM table@foobar;
将引用私有dblink
而不是公共私有B
。但是,对于我需要帐户dblink
权限的情况,我无法弄清楚如何明确引用公开@foobar
。
有没有人知道我可以用来引用公共{{1}}的语法?
答案 0 :(得分:1)
来自Oracle文档。
Oracle首先在您自己的架构中搜索与该语句中的数据库链接同名的私有数据库链接。然后,如有必要,它会搜索具有相同名称的公共数据库链接。
我不认为这可以以任何方式改变。不是我在文档中知道或发现的。您可以创建公共同义词,但只有在需要使用B
特定对象进行访问时才能使用。无法为整个数据库链接创建同义词。
在会话级别上将global names
更改为False
并使用其他无效的链接名称创建指向B
的新链接会更容易。如果您在会话级别更改global names
,则只允许该会话使用新链接。