【发布时间】:2015-02-02 15:17:34
【问题描述】:
我安装了 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) vs. 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 个 Home,其中 32 位 Home 是活动的。
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 位家庭还是我安装了两个 Oracle 客户端?
Q2:为什么 32 位 TOAD 不使用位置 #1 的 tns,而只使用位置 #3 的 tns?
Q3:如果我保留位置 3 的 tns 文件,dbForge 和 TOAD 都可以工作,但我想知道原因,以便准确了解如何将 tns 信息从一台机器移动到另一个。
【问题讨论】: