【问题标题】:Explicitly refer to public DBLink when schema owns a private one of same name?当架构拥有同名的私有 DBLink 时,显式引用公共 DBLink?
【发布时间】:2016-03-21 18:31:00
【问题描述】:

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

  • 一个是私人dblink,它使用帐户A访问Foobar数据库
  • 另一个是 public dblink 到同一个 Foobar 数据库,该数据库使用帐户 B 进行访问

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


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

SELECT * 
FROM table@foobar;

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

有谁知道我可以用来指代公众@foobar 的语法吗?

【问题讨论】:

  • 你能为其中一个 dblink 创建一个独特的同义词吗?

标签: sql oracle public dblink


【解决方案1】:

来自 Oracle 文档。

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
相关资源
最近更新 更多