sql >> Base de Datos >  >> RDS >> Oracle

Oracle.DataAccess.Client.OracleException ORA-03135:conexión perdida contacto

Ocurre porque su código solicita una conexión del grupo de conexiones de Oracle y el grupo de conexiones devuelve una conexión desconectada/obsoleta a la base de datos de Oracle. ODP.NET no prueba por sí mismo el estado de conexión de la conexión enviada al cliente.

Entonces, para estar seguro, verifica el connection status == Open para la conexión recibida del grupo cuando haces un Connection.Open()

O

deje que ODP.NET haga la verificación por usted configurando Validate Connection = true en su cadena de conexión en web.config.

Ambos métodos tienen un impacto en el rendimiento, ya que prueban el estado de la conexión cada vez que necesita conectarse a la base de datos.

Una tercera opción que utilizo es el uso de excepciones. Primero, sea optimista y use cualquier conexión que se devuelva del conjunto de conexiones. Si obtiene un ORA - 3135, solicite una nueva conexión y ejecute su consulta nuevamente como un ciclo while. En el mejor de los casos, puede obtener su primera conexión como válida y su consulta se ejecutará. En el peor de los casos, todas las conexiones de su grupo están obsoletas, en cuyo caso el código se ejecutará N veces (donde N es el tamaño del grupo de conexiones).