1

问候,

我的公司在财务和人力资源方面使用 Peoplesoft。我们的实现是在 Oracle 数据库上。设置 global_names = TRUE 会强制您将数据库链接命名为与目标相同。我的问题是有人知道在 init.ora 参数文件中将 global_names 设置为 false 的后果吗?

更具体地说,我希望我们的一个环境 (global_names = true) 有一个名为 PRODLINK 的数据库链接,它将指向生产 HR 数据库。另一个环境(其中 global_names = false)也将有一个名为 PRODLINK 的链接,但它将指向一个非生产数据库。更复杂的是,一个数据库环境是 Oracle 9.2,而另一个是 Oracle 10.2

我已经为此寻找答案,但找不到答案。提前感谢您提供的任何帮助/建议。

JC

4

1 回答 1

3

具有 global_names=TRUE 的好处只是它迫使您为数据库链接使用名称,这些名称清楚地表明它们连接到哪个数据库。将其设置为 FALSE 只会消除此限制;缺点是它允许您使用可能令人困惑的名称建立链接。在相反的情况下,如果您有数据库 A、B 和 C,您可以在 A 中创建一个名为“B”但指向 C 的链接。

您还可以将其视为一个安全问题,因为设置 global_names=FALSE 使得有人可能恶意更改链接的定义,从而导致不适当的访问或数据损坏。不过,我想不出一个具体的场景。

总体而言,将其设置为 FALSE 并没有太大的缺点。但是,您可以考虑其他几个选项。

一种是保持全局设置 TRUE,但在需要它的代码的会话级别将其重置为 FALSE。我们在我的网站上这样做是因为只有一个应用程序需要使用“错误”命名的链接。此方法可确保以交互方式使用链接或编写使用该链接的代码的任何人都会被提醒该名称与目的地不匹配。

另一种方法是保持 global_names=TRUE,因此环境使用不同的链接名称,但将链接名称作为代码中的参数或配置选项。例如,如果您有构建 PL/SQL 包的脚本,您可以将链接名称作为脚本的参数。

于 2008-11-25T13:55:29.710 回答