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

Qué puede causar errores intermitentes de ORA-12519 (TNS:no se encontró un controlador apropiado)

No sé si esta será la respuesta de todos, pero después de investigar un poco, esto es lo que se nos ocurrió.

Obviamente, el error se debe al hecho de que el oyente no aceptaba conexiones, pero ¿por qué obtendríamos ese error cuando otras pruebas podrían conectarse bien (también podríamos conectarnos sin problemas a través de sqlplus)? La clave del problema no era que no pudiéramos conectarnos, sino que era intermitente

Después de algunas investigaciones, descubrimos que se crearon algunos datos estáticos durante la configuración de la clase que mantendrían conexiones abiertas durante la vida de la clase de prueba, creando otras nuevas a medida que avanzaba. Ahora, a pesar de que todos los recursos se liberaron correctamente cuando esta clase quedó fuera del alcance (a través de un bloque finalmente {}, por supuesto), hubo algunos casos durante la ejecución en los que esta clase absorbió todas las conexiones disponibles (bueno, mal alerta de práctica:este era un código de prueba de unidad que se conectaba directamente en lugar de usar un grupo, por lo que el mismo problema no podía ocurrir en producción).

La solución fue no hacer que esa clase sea estática y ejecutarse en la configuración de la clase, sino usarla en los métodos de configuración y desmontaje por método.

Entonces, si recibe este error en sus propias aplicaciones, coloque un generador de perfiles en ese chico malo y vea si es posible que tenga una fuga de conexión. Espero que ayude.