Oracle DB:java.sql.SQLException:关闭连接

java.sql.SQLException的原因:从Oracle关闭连接?

java.sql.SQLException:关闭连接oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)at oracle.jdbc.driver.DatabaseError .throwSqlException(DatabaseError.java:208)at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:1131)at oracle.jdbc.OracleConnectionWrapper.commit(OracleConnectionWrapper.java:117)

我们从故障转移数据库连接中收到此错误。 我们也为其他数据库使用相同的代码。 但只有一个数据库可以看到这个问题。 这是因为连接可能由于长时间不活动而超时,我们正试图使用​​它? 请让我知道你是否需要更多细节...

AbandonedConnectionTimeout设置为15分钟InactivityTimeout设置为30分钟


这意味着连接在某个时候成功建立,但是当您尝试在那里提交时,连接不再打开。 你提到的参数听起来像连接池设置。 如果是这样,他们与这个问题无关。 最可能的原因是您和数据库之间的防火墙会在一定的空闲时间后终止连接。 最常见的修复方法是在连接被检出时使连接池运行验证查询。 这将立即识别并驱逐死亡连接,确保您只能从游泳池中获得良好的连接。


您必须验证连接。

如果您使用Oracle,您可能会使用Oracle的通用连接池。 以下假设你这样做。

验证连接的最简单方法是告诉Oracle连接在借用时必须经过验证。 这可以用来完成

pool.setValidateConnectionOnBorrow(true);

但是,只有在短时间内保持连接时才有效。 如果您长时间借用连接,连接可能会在您拿着连接时断开。 在这种情况下,您必须使用显式验证连接

if (connection == null || !((ValidConnection) connection).isValid())

有关更多详细信息,请参阅Oracle文档。

链接地址: http://www.djcxy.com/p/61697.html

上一篇: Oracle DB : java.sql.SQLException: Closed Connection

下一篇: Connection with a remote database using java swing application