【发布时间】:2015-12-22 06:31:27
【问题描述】:
在一个 2 节点集群上,当一个节点关闭时,会出现以下 c3p0 错误:
2015-11-10 10:00:25,655 | WARN | scheduler-1 | org.apache.log4j.Category | Exception on close of inner statement.
java.sql.SQLRecoverableException: Closed Connection
at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:5416)
at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1585)
at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1570)
at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:94)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.close(OraclePreparedStatementWrapper.java:82)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1811)
上面的警告后面跟着:
2015-11-10 10:00:25,668 | WARN | DefaultQuartzScheduler_Worker-10 | org.apache.log4j.Category | [c3p0] Another error has occurred [ java.sql.SQLRecoverableException: Closed Connection ] which will not be reported to listeners!
java.sql.SQLRecoverableException: Closed Connection
at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:5416)
at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1585)
at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1570)
at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:94)
根据 Steve Swaldman 在 c3p0 github page 上的评论,这些警告与无效/陈旧的连接有关。
那么在 oracle RAC 环境中,当一个实例关闭时,节点启动并运行时已经获得的连接会发生什么?在大多数情况下,节点关闭后数据库操作工作正常。只有少数插入未能抛出上述警告。 c3p0 连接池是否适合在 RAC 环境中使用?
有关警告的更多信息:http://sourceforge.net/p/c3p0/mailman/message/18310863/
【问题讨论】: