当架构拥有一个同名的私有数据库时,是否明确引用 public DBLink?
Explicitly refer to public DBLink when schema owns a private one of same name?
我正在进行一个迁移项目,需要将多个 Oracle
数据库模式导入现有数据库。这个要求带来了一个有趣的冲突,我现在有两个同名的dblinks
:
- 一个是 private
dblink
,它使用帐户 A
访问 Foobar
数据库
- 另一个是 public
dblink
到同一个 Foobar
数据库,它使用帐户 B
进行访问
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.
我正在进行一个迁移项目,需要将多个 Oracle
数据库模式导入现有数据库。这个要求带来了一个有趣的冲突,我现在有两个同名的dblinks
:
- 一个是 private
dblink
,它使用帐户A
访问Foobar
数据库 - 另一个是 public
dblink
到同一个Foobar
数据库,它使用帐户B
进行访问
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.