Oracle.ManagedDataAccess 如何处理 19.3 版中的 tnsname.ora?

How does Oracle.ManagedDataAccess handle tnsname.ora in version 19.3?

使用 Oracle.ManagedDataAccess.dll 1218,如果你想使用 tnsname.ora 别名,那么你必须定义环境变量 TNS_ADMIN对应路径.

我刚刚发现版本 19 可以在没有此环境变量的情况下获得 tnsname.ora 配置,但我不确定如何获得?

web.congmachine.config 都不包含该环境变量。

注册表编辑器里好像有一个路径,但是我修改了错误的路径,我的项目仍然有效。

根据我的测试,这里列出了哪些有效,哪些无效:

所以我想知道为什么这个特殊案例有效?

还有 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 成功失败。