Oracle.ManagedDataAccess 如何处理 19.3 版中的 tnsname.ora?
How does Oracle.ManagedDataAccess handle tnsname.ora in version 19.3?
使用 Oracle.ManagedDataAccess.dll
12
和 18
,如果你想使用 tnsname.ora
别名,那么你必须定义环境变量 TNS_ADMIN
对应路径.
我刚刚发现版本 19
可以在没有此环境变量的情况下获得 tnsname.ora
配置,但我不确定如何获得?
web.cong
和 machine.config
都不包含该环境变量。
注册表编辑器里好像有一个路径,但是我修改了错误的路径,我的项目仍然有效。
根据我的测试,这里列出了哪些有效,哪些无效:
- 具有 Oracle.ManagedDataAccess
19.3
(和上级)的本地客户端 19.3
:在没有 TNS_ADMIN
Env 的情况下工作
- 具有 Oracle.ManagedDataAccess
18.6
(和之前)的本地客户端 19.3
:没有 TNS_ADMIN
Env 无法工作
- 具有 Oracle.ManagedDataAccess 的本地客户端
12.1
(所有版本):没有 TNS_ADMIN
Env 无法工作
所以我想知道为什么这个特殊案例有效?
还有 Oracle.ManagedDataAccess 中的方法 return 使用的 tnsname.ora
路径?
谢谢,
我没有任何关于 Oracle.ManagedDataAccess.dll 的经验,但我知道一般来说,no 客户 requires TNS_ADMIN待定。 TNS 层本身在寻找 tnsnames.ora 的地方有一个优先顺序,这在调用客户端之外。首先它寻找一个 TNS_ADMIN 环境变量。如果未设置,或者在 TNS_ADMIN 点处未找到 tnsnames.ora,则接下来检查进程的当前目录。如果在那里没有找到,它会检查 $ORACLE_HOME/network/admin。我会说你的陈述 "if you want to use tnsname.ora aliases, then you have to define the Environment Variable TNS_ADMIN with the corresponding path" 是你根据对阅读或观察的错误解释得出的结论。
感谢大家的回答。
我终于找到了使用 Process Monitor (thx @WernfriedDomscheit) 并使用 TNS_ADMIN
.
过滤 Path
列的解决方案
注册表编辑器中有两个路径包含 TNS_ADMIN
变量:
- HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET.Managed.122.19.1
- HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\ODP.NET.Managed.122.19.1
我只是想删除非 WOW6432Node
路径。如果我也删除 WOW6432Node
一个,那么 Oracle.ManagedDataAccess.dll
成功失败。
使用 Oracle.ManagedDataAccess.dll
12
和 18
,如果你想使用 tnsname.ora
别名,那么你必须定义环境变量 TNS_ADMIN
对应路径.
我刚刚发现版本 19
可以在没有此环境变量的情况下获得 tnsname.ora
配置,但我不确定如何获得?
web.cong
和 machine.config
都不包含该环境变量。
注册表编辑器里好像有一个路径,但是我修改了错误的路径,我的项目仍然有效。
根据我的测试,这里列出了哪些有效,哪些无效:
- 具有 Oracle.ManagedDataAccess
19.3
(和上级)的本地客户端19.3
:在没有TNS_ADMIN
Env 的情况下工作
- 具有 Oracle.ManagedDataAccess
18.6
(和之前)的本地客户端19.3
:没有TNS_ADMIN
Env 无法工作
- 具有 Oracle.ManagedDataAccess 的本地客户端
12.1
(所有版本):没有TNS_ADMIN
Env 无法工作
所以我想知道为什么这个特殊案例有效?
还有 Oracle.ManagedDataAccess 中的方法 return 使用的 tnsname.ora
路径?
谢谢,
我没有任何关于 Oracle.ManagedDataAccess.dll 的经验,但我知道一般来说,no 客户 requires TNS_ADMIN待定。 TNS 层本身在寻找 tnsnames.ora 的地方有一个优先顺序,这在调用客户端之外。首先它寻找一个 TNS_ADMIN 环境变量。如果未设置,或者在 TNS_ADMIN 点处未找到 tnsnames.ora,则接下来检查进程的当前目录。如果在那里没有找到,它会检查 $ORACLE_HOME/network/admin。我会说你的陈述 "if you want to use tnsname.ora aliases, then you have to define the Environment Variable TNS_ADMIN with the corresponding path" 是你根据对阅读或观察的错误解释得出的结论。
感谢大家的回答。
我终于找到了使用 Process Monitor (thx @WernfriedDomscheit) 并使用 TNS_ADMIN
.
Path
列的解决方案
注册表编辑器中有两个路径包含 TNS_ADMIN
变量:
- HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET.Managed.122.19.1
- HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\ODP.NET.Managed.122.19.1
我只是想删除非 WOW6432Node
路径。如果我也删除 WOW6432Node
一个,那么 Oracle.ManagedDataAccess.dll
成功失败。