Cha*_*adD 10 oracle toad sqlplus
我安装了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
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
基于每个程序的位置(Program Files(x86)与c:\ Program Files),这向我建议,32位程序Toad应该使用32位驱动程序,而dbForge应该使用64位驱动程序.
dbForge似乎使用位置#2或#3中的tnsnames.ora文件.我知道这一点,系统地重命名除了一个tns文件之外的所有文件,然后在尝试使用app创建新连接时检查从文件中读取的连接名是否可用.
但是,TOAD似乎只识别位置#3中的tnsnames.ora文件,它根本无法识别位置2中的tnsnames.ora文件!(因为它是一个32位程序,我没想到它会识别位置2中的tns文件,就是这种情况).为了清楚起见,TOAD测试总结了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
Run Code Online (Sandbox Code Playgroud)
Q1: OraClient11g_home1是我的64位家用还是我安装了两个Oracle客户端?
Q2:为什么32位TOAD不使用位置#1中的tns而不是仅使用位置#3中的tns?
问题3:如果我离开位置3的tns文件,dbForge和TOAD都可以工作,但我想知道为什么这样我就能准确地理解如何将tns信息从一台机器移动到另一台机器.
根据您的路径,您怀疑有两个已安装的客户端(Toad和dbforge是工具,而不是客户端,因此您的术语有点偏离).一个32位,另一个64位.根据其安装路径,Toad似乎是32位,但是执行它并转到Help | Support Bundle.您将看到顶部标题将是"APPLICATION INFORMATION(32-bit)"或"APPLICATION INFORMATION(64-bit)"以确认.Toad 11.6是第一个引入64位版本的.
Toad只会看到与其相同平台的Oracle客户端.所以你的64位客户端与Toad无关.C:\ Windows\TNS似乎是一个用于TNS_ADMIN文件夹的文件夹,因为它有奇怪的位置和Toad看到它的事实.在命令提示符下执行SET TNS_ADMIN并查看它是否报告"TNS_ADMIN = C:\ Windows\TNS"如果是,则所有工具都应使用该tnsnames.ora.如果你指向包含你的网络配置文件的文件夹,这是一个全局覆盖.如果您没有将TNS_ADMIN设置为环境变量,请在Oracle根注册表中查找它:HKEY_LOCAL_MACHINE\Software\Oracle.
如果您为所有工具使用一组通用连接,我将删除所有tnsnames.ora文件.我还将C:\ Windows\TNS文件夹重新定位到更适合的地方,如C:\ Oracle\Admin,并在那里创建你的tnsnames.ora,sqlnet.ora和ldap.ora(如果适用).创建指向该位置的TNS_ADMIN环境变量.
根据Oracle,搜索这些位置tnsnames.ora
,分别为.sqlnet.ora
并且ldap.ora
:
TNS_ADMIN
会话或用户定义的脚本定义TNS_ADMIN
定义为全局环境变量TNS_ADMIN
在注册表中定义%ORACLE_HOME/network|net80\admin
(Oracle默认位置)但是,我不确定每个应用程序/驱动程序是否都遵循此列表.我从Oracle Document 111942.1获得了这个列表,指的是Oracle 9i,所以它可能已经过时了.
在" 数据库网络服务管理员指南"中,顺序是
TNS_ADMIN
由环境变量定义TNS_ADMIN
在注册表中定义(如果TNS_ADMIN
环境变量不存在)%ORACLE_HOME%/network/admin
目录(如果TNS_ADMIN
环境变量不存在)我建议为一个环境变量定义TNS_ADMIN
并仅使用一个tnsnames.ora文件.为了安全起见,请检查您的注册表值.
如果您的文件不位于%ORACLE_HOME%\network\admin
,我建议创建符号链接,它-仅仅是在非常安全的一面,如mklink /d %ORACLE_HOME%\network\admin c:\Oracle\common\settings\admin
另请注意,您不必使用tnsnames.ora文件"播放".使用Microsoft Sysinternals的Process Monitor,您可以监视每个文件访问,即过滤器将是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 ServerTNS_ADMIN
从opmn.xml
配置文件中读取设置.
另一个例子,对于ODP.NET托管驱动程序(Oracle.ManagedDataAccess)测试版,我在Oracle Managed和TNS Names上找到了这个订单:
<oracle.manageddataaccess.client>
在.NET配置文件部分(即machine.config
,web.config
,user.config
).tnsnames.ora
指定的位置的TNS_ADMIN
文件中.tnsnames.ora
文件中存在的文件相同.exe
.tnsnames.ora
存在于的文件中的数据源别名%TNS_ADMIN%
%TNS_ADMIN%
是环境变量设置).tnsnames.ora
存在于的文件中的数据源别名%ORACLE_HOME%\network\admin
%ORACLE_HOME%
是环境变量设置).在官方文档(12c Release 4(12.1.0.2.4))中,它说:
dataSources
根据第<oracle.manageddataaccess.client>
在.NET配置文件部分(即machine.config
,web.config
,user.config
).tnsnames.ora
指定的位置的TNS_ADMIN
文件中.位置可以包含绝对或相对目录路径.tnsnames.ora
文件中存在的文件相同.exe
.然而,根据一些测试我ODP.NET管理的驱动程序(4.121.2.0)需要做%ORACLE_HOME%\network\admin
和TNS_ADMIN
环境变量考虑在内.像文档一样的锁不是100%正确.
归档时间: |
|
查看次数: |
61432 次 |
最近记录: |