ODP.NET Oracle.ManagedDataAccess provoca el final del archivo de sesión de red ORA-12537
Quiero reemplazar Oracle.DataAccess con Orcale.GestionadoDataAccess, pero abrir una conexión con este último arroja unORA-12537 final de sesión de red de archivo excepción.
Mensaje de excepción / seguimiento de pila
{OracleInternal.Network.NetworkException (0x000030F9):ORA-12537: Netzwerksession: Dateiende en OracleInternal.Network.ReaderStream.Read (OraBuf OB) en OracleInternal.TTC.OraBufReader.GetDataFromNetwork () en OracleInternal.TTC.OraBufReader.Read (Boolean bIgnoreData) en. en OracleInternal.TTC.TTCProtocolNegotiation.ReadResponse ()}
Estoy intentando conectarme a una base de datos Oracle 11g y no tengo un cliente instalado en mi máquina local.
Aplicación de prueba de trabajo (no administrada)Usando Oracle.DataAccessfunciona bien.
using System;
using Oracle.DataAccess.Client;
namespace App.Odp.Unmanaged
{
internal class Program
{
private static void Main(string[] args)
{
//dummy connection string. using SID
string connectionString = "User Id=***;password=***;Data Source=1.2.3.4:1521/sid01;";
try
{
using (var conn = new OracleConnection(connectionString))
{
conn.Open();
using (OracleCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from all_users";
using (OracleDataReader reader = cmd.ExecuteReader())
{
Console.WriteLine("VisibleFieldCount: {0}", reader.VisibleFieldCount);
Console.WriteLine("HiddenFieldCount: {0}", reader.HiddenFieldCount);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error:{0}", ex.Message);
}
Console.ReadLine();
}
}
}
Referencias y dependenciasOracle.DataAccess (2.111.7.0)oci.dll (11.1.0.1)orannzsbb11.dll (11.1.0.6)oraociei11.dll (Cliente instantáneo de Oracle Call Interface)OraOps11w.dll (2.111.7.0)Configuración del proyectoObjetivo de plataformax86
Marco objetivo 4.5
Usando el paquete nugetOracle ODP.NET oficial, controlador administrado 12.1.21
El código es idéntico al anterior. Solo cambio:
using System;
using Oracle.ManagedDataAccess.Client;
//... rest the same as above
Referencias y dependenciasSolamente:
Oracle.ManagedDataAccess (4.121.2.0)Configuración del proyectoObjetivo de plataformaCualquier CPU
Marco objetivo 4.5
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<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>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no" />
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<!--<dataSource alias="MyDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=1.2.3.4)(PORT=1521))(CONNECT_DATA=(SID=sid01)))" />-->
</dataSources>
<settings>
<!--<setting name="SQLNET.AUTHENTICATION_SERVICES" value="NTS"/>-->
</settings>
</version>
</oracle.manageddataaccess.client>
</configuration>
Intenté diferentes configuraciones (NTS, ninguna, todas) y cambié la cadena de conexión aId. De usuario = XXX; contraseña = XXX; Fuente de datos = MyDataSource;, pero el error permanece igual.
Preguntas¿Qué podría estar causando elORA-12537 final de sesión de red de archivo ¿excepción?¿Falta una referencia / dependencia?¿Hay que configurar algo en el servidor DB?ACTUALIZAREn el servidor estamos obteniendo unORA-12679: Servicios nativos deshabilitados por otro proceso pero requeridos error en el alert.log.
Parece tener algo que ver con el cifrado. Comentando las siguientes líneas en los servidores sqlnet.ora resuelve el problema.
#SQLNET.AUTHENTICATION_SERVICES=(NTS)
#SQLNET.ENCRYPTION_TYPES_SERVER = (rc4_128, rc4_256)
#SQLNET.ENCRYPTION_SERVER=REQUIRED
#ENCRYPTION_WALLET_LOCATION=
# (SOURCE=(METHOD=FILE)(METHOD_DATA=
# (DIRECTORY=...\%ORACLE_SID%\wallet)))
Nueva pregunta¿Cómo configuramos ManagedDataAccess para que funcione con el cifrado?
Actualización 2Parece funcionar ahora con ODP Managed Driver 12c:
https://www.nuget.org/packages/Oracle.ManagedDataAccess/