当架构拥有一个同名的私有数据库时,是否明确引用 public DBLink?

Explicitly refer to public DBLink when schema owns a private one of same name?

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

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


我已经通过反复试验发现,当登录到拥有私有 dblink 的架构时,会出现以下情况:

SELECT * 
FROM table@foobar;

将引用私有 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 特定对象访问时才有效。无法为整个数据库创建同义词 link。

在会话级别将 global names 转换为 False 并使用其他无效的 link 名称创建新的 link 到 B 不是更容易吗.如果您在会话级别更改 global names,则仅允许该会话使用新的 link.