2011-08-22 16 views
6

Mi equipo de desarrollo está experimentando numerosos errores ORA-12571: TNS:packet writer failure utilizando ASP.NET 3.5 y 4.0 contra Oracle 11g. Estos errores son inconsistentes en cuanto a cuándo ocurren y son generados por numerosas aplicaciones. Esta excepción se produce al invocar procedimientos almacenados aleatorios, paquetes y sentencias SQL en línea. El cliente Oracle 11 está instalado en el servidor web. Algunas aplicaciones usan Microsoft System.Data.OracleClient para conectarse a Oracle, y algunas utilizan los componentes .NET proporcionados por oracle (ODP.NET). Ambos objetos de acceso a datos presentan el mismo error.ORA-12571: TNS: error del escritor de paquetes con ASP.NET

Existen otras aplicaciones no .NET que se ejecutan en un servidor web diferente, pero utilizan el mismo servidor de base de datos. Las aplicaciones no tienen tales problemas. Mi idea inicial es que hay algo configurado incorrectamente en el servidor web con el cliente de Oracle.

¿Alguien más ha recibido este error? ¿Qué hiciste para arreglarlo?

ORA-12571: TNS:packet writer failure 

Seguimiento de la pila:

at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc) 
    at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals) 
    at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals) 
    at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior) 
    at System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior) 
    at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 
    at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
    at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
    at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) 

Respuesta

1

creo que esto es un error en Oracle. Me encontré con muchos problemas con el método DBDataAdapter.Fill donde Oracle Client se ahogaría con un error de memoria. Esto se resolvió para mí al usar el cliente 11.2.0.2 con el parche 6 aplicado.

Si busca el sitio de soporte de Oracle, verá muchos problemas como este.

Consulte también problemas de "Leer memoria protegida" con los clientes 11g1/11g2.

+0

Gracias por el asesoramiento. Intentaré instalar el cliente 11.2 con el parche 6 aplicado. – dretzlaff17

+0

Estoy eliminando gradualmente el mismo problema @ dretzlaff17 si lo ha resuelto, mencione cómo lo resolvió. es decir, cuando ejecuto SP con los parámetros de entrada y salida, obtengo el error como usted mencionó, lo que funciona bien. Espero que vuelvas a mi comentario pronto. – Maxymus

5

Otra posible solución es que el cortafuegos entre usted y la base de datos Oracle cree que su conexión está muerta y la cierra debajo de usted. Solo lo sabrá cuando intente ejecutar una consulta y obtenga el error ORA-12571.

Esto se debe a que las conexiones están abiertas durante mucho tiempo sin actividad.

La solución es agregar SQLNET.EXPIRE_TIME al archivo sqlnet.ora en el servidor y establecerlo en algún intervalo (10). Esto hará que las conexiones se activen cada 10 minutos para garantizar que estén todavía activas.

El resultado de esto es que su firewall verá la actividad de la red y no cerrará la conexión.

SQLNET.EXPIRE_TIME=10 

ORA-12571: TNS:packet writer failure - One of the hardest problems I've had to resolve

+0

El enlace está abajo :( – SuperJMN

+0

Gracias por hacérmelo saber, el enlace se ha actualizado – JordanBean

0

Después de instalar el módulo ELMAH y pude analizar las excepciones, que trataron de:

  1. Cambiar la configuración del enlace.
  2. Eliminar y/o actualizar las reglas del firewall del servidor.
  3. Actualice el cliente de Oracle en la máquina del servidor.

Cualquiera de las opciones anteriores resuelve el problema, pero me estaba olvidando el proveedor obsoleta (System.Data.OracleClient) la que estábamos usando. Después de que lo reemplacé con la última versión de ODP.NET (Oracle.DataAccess), todo comenzó a funcionar sin problemas.

Obs: de acuerdo con su descripción de la excepción, actualmente utiliza el proveedor obsoleto.

Cuestiones relacionadas