设置 global_names 参数

发布于 2024-07-09 05:36:35 字数 443 浏览 8 评论 0原文

您好,

我的公司使用 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

我已经搜索了这个问题的答案,但找不到答案。 预先感谢您提供的任何帮助/建议。

杰成

Greetings,

My company uses Peoplesoft for its financials and HR. Our implementation is on Oracle databases. Setting global_names = TRUE forces you to name your database link the same as the target. My question is does anyone know the ramification of setting global_names to false in the init.ora parameter file?

More specifically, I want one of our environments (global_names = true) to have a database link called PRODLINK and it will point to a production HR database. Another environment (where global_names = false) will also have a link called PRODLINK but it will point to a non-production database. To further complicate it, one database environment is at Oracle 9.2 while the other is at Oracle 10.2

I have searched for an answer for this but can't find one. Thanks in advance for your any help/advice you can offer up.

J.C.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

马蹄踏│碎落叶 2024-07-16 05:36:35

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

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

总的来说,将其设置为 FALSE 并没有太大的缺点。 但是,您还可以考虑其他一些选择。

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

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

The upside of having global_names=TRUE is simply that it forces you to use names for database links that indicate clearly what database they connect to. Setting it to FALSE simply removes this restriction; the downside is that it will allow you to make links with names that could be confusing. In the perverse case, if you had databases A, B, and C, you could create a link in A called "B" but pointing to C.

You could also consider it a security issue, in that setting global_names=FALSE makes it slightly possible that someone could maliciously change the definition of a link, causing either inappropriate access or data damage. I can't think of a specific scenario for this though.

Overall, there isn't a big downside to setting it FALSE. However, there are a couple of other options you could consider.

One is to keep the global setting TRUE but reset it to FALSE at a session level in the code that needs it. We do this at my site because there is only one application that requires the use of "incorrectly" named links. This method ensures that anyone using the link interactively or writing code that uses it will be reminded that the name does not match the destination.

Another is to keep global_names=TRUE, so the environments use different link names, but make the link name a parameter or configuration option in your code. For instance, if you have scripts that build PL/SQL packages, you could make the link name a parameter of the script.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文