【问题标题】:TNS_ADMIN environment variableTNS_ADMIN 环境变量
【发布时间】:2014-10-20 21:45:24
【问题描述】:

所以我有一个客户正在跨平台环境中部署多个版本的 oracle。他们将 TNS 名称文件存储在网络资源上。用户将通过 Windows 8.1 访问。 12c 将同时提供 32 位和 64 位版本。客户端希望能够使用 TNS_ADMIN 环境变量来解析 TNS 名称,并且基本上希望这成为每个登录工作站的用户的永久设置。我读过很多文章,有人说在环境密钥下设置在 HKLM 下,有人说在 HKLM 和软件下创建它。有人说 HKCU 只适用于当前登录的用户。如有任何帮助,我们将不胜感激。

【问题讨论】:

    标签: oracle client environment-variables tnsnames


    【解决方案1】:

    我个人是通过环境变量设置的,而不是注册表。您应该能够添加到该机器上的全局环境变量。如果您确实在注册表中设置了它,它应该是 HKLM(本地机器),因为这是 Oracle 用于 Oracle 主目录和配置变量的默认设置,尽管 Oracle 不使用 Windows 软件注册表,但它会在自己的数据库中进行跟踪这是通过 OUI 管理的。

    一个简单的测试方法是在非标准位置创建一个 tnsnames.ora 文件,将 TNS_ADMIN 指向它,添加一个条目 (FOO1) 并保存,然后尝试从命令提示符 tnsping FOO1。

    您会很快看到设置是否生效。

    【讨论】:

    • 我很欣赏这个答案,但这确实不能为我们的案例提供解决方案。在机器上设置它不是一种选择。我认为它是 HKLM,但它是在 HKLM\Software\WOW6432Node 下,是在「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 下,还是在「HKEY_CURRENT_USER\Environment」下。如果它在当前用户下会带来更大的挑战,因为我们希望在安装期间完成此操作。最后,我知道 Unix/Oracle/Java 有时在涉及 env 时使用“\\”键本身的值。变量。请记住,我们说的是网络位置。
    • 好的,我建议的原因是你的问题是basically wants this to be a permanent setting for each user who logs on the workstation,所以我不确定你使用的是个人资料。因此,您正在使用一个域,并希望在每个用户或所有用户的用户配置文件中进行设置?
    • 不,这很好理解。所以基本上我们使用 OUI 来生成响应文件。我们在 sccm 中运行一个批处理文件来启动 setup.exe 和 .rsp 文件。我希望做的是能够在批处理中添加注册表项或运行命令,这将永久设置 tnsnames (TNS_ADMIN) 的环境变量,这实际上是在用户自动映射到的网络驱动器上作为一部分的登录过程。所以 tnsnames 文件基本上位于 x:\\sharename\directory\
    • 好的,你有没有试过设置 HKLM\Software\Oracle\\TNS_ADMIN ?那就是它要去的地方。您应该能够在安装完成后添加它。否则,我可能会尝试添加一个脚本来修改环境变量。我以前用 Visual Studio 安装项目做过,所以我知道它可以做到。
    猜你喜欢
    • 1970-01-01
    • 2014-09-30
    • 2020-12-07
    • 1970-01-01
    • 2014-12-17
    • 2019-05-15
    • 1970-01-01
    相关资源
    最近更新 更多