gpt4 book ai didi

oracle - 确定相关 tnsnames.ora 文件的位置

转载 作者:行者123 更新时间:2023-12-04 03:27:08 26 4
gpt4 key购买 nike

我安装了 32 位和 64 位 Oracle 11g 驱动程序。我在我的电脑上搜索名为“tnsnames.ora”的文件,并在以下位置找到了 3 个:

1. C:\Oracle\product\11203_32bit\CLIENT_1\NETWORK\ADMIN
2. C:\Oracle\product\11203_64bit\CLIENT_1\NETWORK\ADMIN
3. C:\Windows\TNS

tnsnames.ora 文件的第三个位置的存在让我感到惊讶。

我的 PC 上安装了以下 Oracle 客户端:
"C:\Program Files (x86)\Quest Software\Toad for Oracle 11.6\Toad.exe"
"C:\Program Files\Devart\dbForge Studio Express for Oracle\dbforgeoracle.exe"

根据每个程序的位置(Program Files (x86) 与 c:\Program Files),这向我建议 Toad,一个 32 位程序,应该使用 32 位驱动程序,dbForge 应该使用 64 位驱动程序。

dbForge 似乎在位置 #2 或 #3 中使用 tnsnames.ora 文件。我通过系统地重命名除一个 tns 文件之外的所有文件,然后在尝试从应用程序创建新连接时检查从文件读取的连接名称是否可用来了解这一点。

但是,TOAD 似乎只能识别位置 #3 中的 tnsnames.ora 文件,而根本无法识别位置 2 中的 tnsnames.ora 文件! (因为它是一个 32 位程序,我没想到它会识别位置 2 中的 tns 文件,事实就是如此)。为了希望清楚起见,总结 TOAD 测试,TOAD 仅识别位置 3 中的 tns 文件。

其他同事在他们机器上的位置 3 中没有 tns 文件。我不确定我为什么这样做。当我运行 Toad 时,它显示以下 2 个主页,其中 32 位主页是事件的主页。
OraClient11g_home1 (11.2.0.3)
ORACLE_HOME:C:\app\C39293\product\11.2.0\client_1
ORACLE_HOME_NAME:OraClient11g_home1
ORACLE_HOME_KEY:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1
ORACLE_SID:
NLS_LANG:AMERICAN_AMERICA.WE8MSWIN1252
SQLPATH:
LOCAL:
Client DLL:C:\app\C39293\product\11.2.0\client_1\oci.dll
TNSNames.ora:
SQLNet.ora:
LDAP.ora:
Login.sql:
GLogin.sql:
In system PATH:No
Home is valid:No
OraClient11g_home1_32bit (11.2.0.3)
ORACLE_HOME:c:\oracle\product\11203_32bit\CLIENT_1
ORACLE_HOME_NAME:OraClient11g_home1_32bit
ORACLE_HOME_KEY:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1_32bit
ORACLE_SID:
NLS_LANG:AMERICAN_AMERICA.WE8MSWIN1252
SQLPATH:c:\oracle\product\11203_32bit\CLIENT_1\dbs
LOCAL:
Client DLL:c:\oracle\product\11203_32bit\CLIENT_1\bin\oci.dll
TNSNames.ora:
SQLNet.ora:
LDAP.ora:
Login.sql:
GLogin.sql:c:\oracle\product\11203_32bit\CLIENT_1\sqlplus\admin\glogin.sql
In system PATH:Yes

Q1: OraClient11g_home1 是我的 64 位 home 还是我安装了两个 Oracle 客户端?

Q2:为什么 32 位 TOAD 不使用位置 #1 中的 tns 而不是仅使用位置 #3 中的 tns?

Q3:如果我留在位置 3 的 tns 文件上,dbForge 和 TOAD 都可以工作,但我想知道为什么这样我就可以准确地了解如何将 tns 信息从一台机器移动到另一台机器。

最佳答案

根据 Oracle 这些位置搜索 tnsnames.ora , 分别sqlnet.oraldap.ora :

  • 当前工作目录中的 Oracle Net 文件 (PWD/CWD)
  • TNS_ADMIN session 定义或由用户定义的脚本
  • TNS_ADMIN定义为全局环境变量
  • TNS_ADMIN在注册表中定义
  • %ORACLE_HOME/network|net80\admin 中的 Oracle Net 文件(Oracle 默认位置)

  • 但是,我不确定每个应用程序/驱动程序是否都遵循此列表。我从 Oracle Document 111942.1 得到了这个列表指的是 Oracle 9i,所以它可能已经过时了。

    Database Net Services Administrator's Guide订单是
  • TNS_ADMIN由环境变量定义
  • TNS_ADMIN在注册表中定义(如果 TNS_ADMIN 环境变量不存在)
  • %ORACLE_HOME%/network/admin目录(如果 TNS_ADMIN 环境变量不存在)

  • 我建议为 TNS_ADMIN 定义一个环境变量并且只使用一个 tnsnames.ora 文件。为了安全起见,还请检查您的注册表值。

    如果您的文件是 不是 位于 %ORACLE_HOME%\network\admin ,我建议为它创建一个符号链接(symbolic link) - 只是为了安全起见,例如 mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
    另一个注意事项,您不必“玩”您的 tnsnames.ora 文件。与 Process Monitor从 Microsoft Sysinternals 可以监控每个文件访问,即过滤器将是 Path contains tnsnames
    更新

    当我在我的机器上运行测试时,我得到以下顺序:
  • 环境变量 TNS_ADMIN
  • 注册表项 HKEY_CURRENT_USER\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
  • 注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN , 分别HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
    -> 仅当 TNS_ADMIN未设置环境变量。
  • %ORACLE_HOME%\network\admin
  • 当前目录(可能与您的应用程序所在的目录不同)
  • 您的应用程序所在的文件夹

  • 更新 2

    显然没有修复搜索,它因不同的提供商/驱动程序而异。也许这也取决于 Oracle 版本。

    例如,Oracle HTTP Server 读取 TNS_ADMIN设置来自 opmn.xml配置文件。

    另一个例子,对于 ODP.NET 托管驱动程序 (Oracle.ManagedDataAccess) 测试版 版本,我在 Oracle Managed and TNS Names 找到了这个订单:
  • <oracle.manageddataaccess.client> 下“dataSources”部分中的数据源别名.NET 配置文件中的部分(即 machine.configweb.configuser.config )。
  • tnsnames.ora中的数据源别名文件位于 TNS_ADMIN 指定的位置在 .NET 配置文件中。
  • tnsnames.ora中的数据源别名文件与 .exe 位于同一目录中.
  • tnsnames.ora中的数据源别名文件存在于 %TNS_ADMIN%(其中 %TNS_ADMIN% 是环境变量设置)。
  • tnsnames.ora中的数据源别名文件存在于 %ORACLE_HOME%\network\admin(其中 %ORACLE_HOME% 是环境变量设置)。

  • 在官方 documentation (12c 第 4 版(12.1.0.2.4))它说:
  • dataSources中的数据源别名部分下 <oracle.manageddataaccess.client> .NET 配置文件中的部分(即 machine.configweb.configuser.config )。
  • tnsnames.ora中的数据源别名文件位于 TNS_ADMIN 指定的位置在 .NET 配置文件中。位置可以由绝对或相对目录路径组成。
  • tnsnames.ora中的数据源别名文件与 .exe 位于同一目录中.

  • 但是,根据我使用 ODP.NET Managed Driver (4.121.2.0) 进行的一些测试,它需要 %ORACLE_HOME%\network\adminTNS_ADMIN环境变量考虑在内。文档之类的锁不是 100% 正确的。

    关于oracle - 确定相关 tnsnames.ora 文件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28280883/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com