Java SpringJDBCTemplate可以等待多长时间才能完成oracle存储过程
我的java代码如下:Java SpringJDBCTemplate可以等待多长时间才能完成oracle存储过程,java,spring,oracle,jdbctemplate,sqlexception,Java,Spring,Oracle,Jdbctemplate,Sqlexception,我的java代码如下: logger.info("start"); getJdbcTemplate().execute("call " + procedureName + "()"); 我得到了一个例外: org.springframework.dao.DataAccessResourceFailureException: StatementCallback; SQL [call PRMI_UPDATE_USER_LOGIN_INFO()]; Io ERROR: Connection re
logger.info("start");
getJdbcTemplate().execute("call " + procedureName + "()");
我得到了一个例外:
org.springframework.dao.DataAccessResourceFailureException: StatementCallback; SQL [call PRMI_UPDATE_USER_LOGIN_INFO()]; Io ERROR: Connection reset; nested exception is java.sql.SQLException: Io ERROR: Connection reset
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:257)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:407)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:428)
也许是因为等待的时间太长了。我发现它在日志中打印了“开始”,大约5分钟后,我得到了异常
2013年3月13日更新:
我不仅在调用oracle存储过程时,而且在druid的“jdbcuti.close(…)”中都遇到了这个异常:
德鲁伊的JdbcUtil.close方法非常简单:
public static void close(Connection x) {
if (x == null) {
return;
}
try {
x.close();
} catch (Exception e) {
LOG.debug("close connection error", e);
}
}
源代码是:
也许是因为等待的时间太长了
不,这不是由于该原因造成的
正如Java文档所说
资源完全失败时引发的数据访问异常:对于
例如,如果我们不能使用JDBC连接到数据库
只要需要,它就应该等待。忘记那些试图基于超时延迟“检测”死锁的各种黑客吧
- 您还应该发现一些ORA-XXXX错误<代码>Io错误:连接重置看起来不像Oracle错误消息,应该有一些错误号附加到它上
- 超时5分钟是一个非常奇怪的值。理论上,这也可以在数据库端设置。作为配置文件参数
,但在这种情况下,您应该会得到一个错误:CPU\u PER\u调用
。您的连接不应该丢失ORA-02393:超出了CPU使用的调用限制
- 从理论上讲,您也可能在检测死区连接时遇到问题,但是5分钟的超时时间太短了
- 另一个可能的原因可能是ORA-600错误。Oracle内部错误,可能您的会话进程崩溃,因此TCP连接丢失
- 您应该联系您当地的DBA,然后请求合作。他们应该比互联网论坛上的匿名者更好地帮助你李>
public static void close(Connection x) {
if (x == null) {
return;
}
try {
x.close();
} catch (Exception e) {
LOG.debug("close connection error", e);
}
}