首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭连接错误17008

关闭连接错误17008
EN

Stack Overflow用户
提问于 2017-06-23 21:35:28
回答 4查看 3K关注 0票数 0

我正在尝试执行一个耗费大量时间的查询,这有时会导致连接关闭,这意味着在查询执行/提交之前连接就会关闭。我想从错误中恢复,获取新的连接,然后重试。

代码语言:javascript
复制
Caused by: java.sql.SQLRecoverableException: Closed Connection
    at oracle.jdbc.driver.OracleStatement.ensureOpen(OracleStatement.java:4051)
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1473)
    at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:406)
    at com.fimt.sat.testora12date.dao.DateSaverGetterDao.testAbandonedConnectionWithDS(DateSaverGetterDao.java:73)
EN

回答 4

Stack Overflow用户

发布于 2017-06-23 21:44:08

您可以尝试捕获此特定错误:

代码语言:javascript
复制
public save(MyData data) {

    try {
        ...
    } catch (SQLRecoverableException e) {
        // Better handling a parameter to set
        // the maximum number of retries
        // Eventually consider to retry on a secondary thread 
        // delayed of a certain number of seconds
        save(data);
    }

}
票数 0
EN

Stack Overflow用户

发布于 2017-06-23 21:56:35

@Davide Lorenzo MARINO的答案是很好的,除非你有一个足够重的查询,即使在几次恢复之后也不能执行。

我不是Oracle的专业人员,但我发现您可以调优某种RAC故障转移,即使在超时之后也能保持事务处理。

但通常我的愿景是,最好在多个查询中以某种方式拆分数据

票数 0
EN

Stack Overflow用户

发布于 2017-06-23 22:33:03

最好拆分/存储select查询中的数据,并按一定的时间间隔提交。例如,如果查询的持续时间为2个月,则存储桶/循环/拆分15天的周期,并执行必要的语句并提交

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44722794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档