java - close connection oracle
Oracle DB: java.sql.SQLException: conexión cerrada (2)
Tienes que validar la conexión.
Si usa Oracle, es probable que use el Universal Connection Pool de Oracle. Lo siguiente asume que lo haces.
La forma más fácil de validar la conexión es decirle a Oracle que la conexión debe validarse al tomarla prestada. Esto se puede hacer con
pool.setValidateConnectionOnBorrow(true);
Pero funciona solo si mantienes la conexión por un período corto. Si tomas prestada la conexión por un tiempo más largo, es probable que la conexión se rompa mientras la sostienes. En ese caso, debe validar la conexión explícitamente con
if (connection == null || !((ValidConnection) connection).isValid())
Consulte la documentación de Oracle para más detalles.
Razones para java.sql.SQLException: ¿conexión cerrada de Oracle?
java.sql.SQLException: conexión cerrada en oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:112) en oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:146) en oracle.jdbc.driver.DatabaseError .throwSqlException (DatabaseError.java:208) en oracle.jdbc.driver.PhysicalConnection.commit (PhysicalConnection.java:1131) en oracle.jdbc.OracleConnectionWrapper.commit (OracleConnectionWrapper.java:117)
Estamos obteniendo este error de la conexión de base de datos de conmutación por error. Usamos el mismo código para otras bases de datos también. Pero al ver este problema con solo una de las bases de datos. ¿Esto se debe a que la conexión podría tener un tiempo de espera debido al largo período de inactividad y estamos intentando usar eso? Por favor, hágamelo saber si necesita más detalles ...
AbandonedConnectionTimeout establecido en 15 minutos InactivityTimeout establecido en 30 mins
Significa que la conexión se estableció exitosamente en algún momento, pero cuando trataste de realizar el commit allí mismo, la conexión ya no estaba abierta. Los parámetros que mencionaste suenan como la configuración del grupo de conexiones. Si es así, no están relacionados con este problema. La causa más probable es un firewall entre usted y la base de datos que está matando las conexiones después de una cierta cantidad de tiempo de inactividad. La solución más común es hacer que su grupo de conexiones ejecute una consulta de validación cuando se desprotege una conexión. Esto identificará y expulsará inmediatamente las conexiones muertas, asegurando que solo obtenga buenas conexiones del grupo.