我正在进行一个迁移项目,需要将多个 Oracle 数据库模式导入到现有数据库中。这个要求带来了一个有趣的冲突,我现在有两个 dblinks同名:
- 一个是私有(private)
dblink,它使用帐户A访问Foobar数据库 - 另一个是 public
dblink到同一个Foobar数据库,它使用帐户B进行访问
Global Names 设置为 true,因此我无法更改这些 dblinks 的名称。
我已经通过反复试验发现,当登录到拥有私有(private) dblink 的架构时,会发生以下情况:
SELECT *
FROM table@foobar;
将引用私有(private) dblink 而不是公共(public)的。但是对于我需要帐户 B 权限的情况,我不知道如何明确引用公共(public) dblink。
有人知道我可以用来引用公共(public) @foobar 的语法吗?
请您参考如下方法:
来自 Oracle 文档。
Oracle first searches for a private database link in your own schema with the same name as the database link in the statement. Then, if necessary, it searches for a public database link with the same name.
我认为这无法以任何方式改变。不是我知道的或在文档中找到的。您可以创建公共(public)同义词,但仅当您需要使用 B 特定对象访问时才有效。无法为整个数据库链接创建同义词。
在 session 级别将 global names 转换为 False 并使用其他无效链接名称创建到 B 的新链接会不会更容易.如果您在 session 级别更改全局名称,则仅允许该 session 使用新链接。




