【发布时间】:2014-12-27 03:09:53
【问题描述】:
托管 ODP.NET x64 12.1.0.2 tnsname.ora 是否支持使用 IFILE?我无法让它工作。
例如,对于我已经安装多年的普通“厚客户端”非托管 Oracle 客户端,我曾经在 tnsnames.ora 文件中包含一行:
IFILE=C:\OracleDataSources\tnsnames.MAIN
然后 C:\OracleDataSources\tnsnames.MAIN 文件包含对配置文件的 IFILE 引用,这些配置文件包含我们组织内每个其他 Oracle 实例的实际数据源定义。这有助于保持我们的配置文件集中并与安装文件分开,并且在使用完整的 Oracle 客户端安装时不会出错。
现在我正在升级一些使用旧的/已弃用的 System.Data.OracleClient 引用的代码以使用 ODP.NET 托管客户端。如果我尝试将 IFILE 引用与托管 ODP.NET 库一起使用,则会收到以下错误:
ORA-12154: TNS: 无法解析指定的连接标识符
在故障排除过程中,我通过使用 Oracle.ManagedDataAccess.Client.OracleDataSourceEnumerator.GetDataSources() 方法 (http://docs.oracle.com/html/B28089_01/OracleDataSourceEnumeratorClass.htm#CBAHABEH ) 确认没有从 tnsnames.ora 检索数据源,该方法将返回从 tnsnames.ora 枚举的所有数据源的列表。
当 tnsnames.ora 中仅使用 IFILE 引用时,我从 GetDataSources 得到 0 个结果。如果我手动将数据源别名直接添加到 web.config TNS_ADMIN 设置中指定的文件夹中的 tnsnames.ora 文件(而不是使用 IFILE 引用),那么数据源将从 GetDataSources 正确返回,并且我可以连接到数据源成功使用 ODP.NET。
有没有办法在 ODP.NET 中使用 IFILE tns 名称引用?
【问题讨论】:
标签: .net odp.net tnsnames odp.net-managed ora-12154