问候,
我的公司使用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
我已经为此寻找答案但找不到答案。提前感谢您提供的任何帮助/建议。
J.C。
答案 0 :(得分:3)
拥有global_names = TRUE的好处就在于它强制您使用数据库链接的名称来清楚地指明它们连接到哪个数据库。将其设置为FALSE只会删除此限制;不利的一面是,它允许您与可能令人困惑的名称建立链接。在相反的情况下,如果你有数据库A,B和C,你可以在A中创建一个名为“B”但指向C的链接。
您还可以将其视为安全问题,因为设置global_names = FALSE会使某人有可能恶意更改链接的定义,从而导致不当访问或数据损坏。我想不出具体的情况。
总的来说,将其设置为FALSE没有太大的缺点。但是,您可以考虑其他几种选择。
一种方法是将全局设置保持为TRUE,但在需要它的代码中的会话级别将其重置为FALSE。我们在我的网站上执行此操作,因为只有一个应用程序需要使用“错误”命名的链接。此方法可确保任何人以交互方式使用链接或编写使用该链接的代码时,将提醒该名称与目标不匹配。
另一种方法是保持global_names = TRUE,因此环境使用不同的链接名称,但在代码中将链接名称作为参数或配置选项。例如,如果您有构建PL / SQL包的脚本,则可以将链接名称作为脚本的参数。