是否可以在oracle客户端11.2.03 32位使用oracle.managed.dataaccess ?



编辑(找到工作解决方案!):

由于某些原因,我的应用程序不会拾取tnsname文件,除非我从.ora文件中删除了其他命名方法(命名方法的顺序,tnsnames, EZCONNECT, LDAP),可以看到优先级的顺序是正确的。我不想从sqlnet中删除这些命名方法。ora文件而是通过添加以下设置这是Dan Keller建议的结合TNS_ADMIN设置Oracle能够获取TNS名称文件。为了明确设置元素是这样的

<settings>
        <setting name="NAMES.DIRECTORY_PATH" value="TNSNAMES"></setting>
        <setting name="TNS_ADMIN" value="d:oracleproduct11.2.0client_1networkadmin"/>                
</settings>

我有一个web应用

我已经从Nuget下载了以下Oracle管理数据访问https://www.nuget.org/packages/Oracle.ManagedDataAccess/12.1.22

开发服务器上的oracle客户端是11.2.0.3 32位

我已经设置了我的网页。配置包含以下

  <settings>
    <setting name="TNS_ADMIN" value="d:oracleproduct11.2.0client_networkadmin"/>

  </settings>
</version>

但是我得到以下错误:

OracleInternal.Network的类型初始化器。AddressResolution'抛出了一个异常。

任何建议吗?谢谢。

[编辑]下面是异常

中的更多信息

OracleInternal.Network的类型初始化器。AddressResolution'抛出了一个异常。在OracleInternal.Network.AddressResolution。解析(String TNSAlias, connectionoptions &CO,字符串instanceName)在OracleInternal.ConnectionPool.PoolManager 3.ResolveTnsAlias(ConnectionString cs) at OracleInternal.ConnectionPool.PoolManager初始化(ConnectionString cs)在OracleInternal.ConnectionPool.OraclePoolManager。初始化(ConnectionString cs)在OracleInternal.ConnectionPool.OracleConnectionDispenser 3.GetPM(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, Boolean& bAuthenticated, Boolean& newPM) at OracleInternal.ConnectionPool.OracleConnectionDispenser获取(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)在Oracle.ManagedDataAccess.Client.OracleConnection.Open ()

Oracle Managed不使用TNS Name文件,而是在app/web中使用自定义配置部分。配置文件。您可以使用Oracle 12托管驱动程序连接到Oracle 11数据库。托管驱动器将忽略之前安装的11g 32位。

需要注意的一点是,托管驱动器不能与Oracle用户定义类型一起工作。

<configuration>
    <system.data>
            <DbProviderFactories>
                <remove invariant="Oracle.ManagedDataAccess.Client"/>
                <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
                    type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
            </DbProviderFactories>
        </system.data>

      <oracle.manageddataaccess.client>
            <version number="*">
                <dataSources>
                    <dataSource alias="DEV11"
                        descriptor=" (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = DEV11SVR)(PORT = 1525)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dev11)))"/>
                </dataSources>
            </version>
        </oracle.manageddataaccess.client>
</configuration>

SQLNET中的内容。ORA文件,它可能是从oracle 11安装中找到TNSNames文件,但是oracle 11配置为在检查TNSNames之前检查LDAP或EZConnect。

您可以覆盖此设置,而无需手动输入TNSNames中的内容,这是使用TNSNames文件的好处,例如,如果您的组织更改服务器并且数据库组管理TNSNames文件。

<oracle.manageddataaccess.client>
    <version number="*">
        <settings>
            <setting name="NAMES.DIRECTORY_PATH" value="TNSNAMES"></setting>
        </settings>
    </version>
</oracle.manageddataaccess.client>

相关内容

  • 没有找到相关文章

最新更新