ORA-01000 - 超出最大打开游标 - Spring JDBC 3.2.5

Posted

技术标签:

【中文标题】ORA-01000 - 超出最大打开游标 - Spring JDBC 3.2.5【英文标题】:ORA-01000 - Maximum open cursors exceeded - Spring JDBC 3.2.5 【发布时间】:2014-09-22 12:12:16 【问题描述】:

我们有一个在 Weblogic Server 12c 上运行的 Java 企业应用程序 使用 Spring JDBC 3.2.5 访问 Oracle 11gR2 数据库。 一段时间后在生产环境中我们得到了这个异常: “ORA-01000 - 超出最大打开游标” 和服务器实例需要 重新启动;似乎打开的游标越来越多 直到它们达到 Oracle 上设置的最大阈值。增加 阈值没有解决问题。 我们检查了(非常大的)源代码,但没有找到任何意义 目前我们错过了关闭连接的地方;而且我们通常 不要打开和关闭连接,但我们使用 Spring JdbcTemplate 处理数据库交互。 可能是弹簧问题? 有什么提示吗?

【问题讨论】:

java.sql.SQLException: - ORA-01000: maximum open cursors exceeded的可能重复 【参考方案1】:

oracle 消息 “ORA-01000 - 超出最大打开游标” 可能是由于未关闭 PreparedStatements 或 ResultSets 造成的。每个PreparedStatementResultSet 都是Oracle 数据库中的一个游标。

为了在短期内避免此错误,您可以增加数据库中打开游标的限制(但迟早会再次发生)。

要真正避免此错误,您必须审核完整的应用程序并关闭所有打开的 PreparedStatements 或 ResultSets。

跟踪所有PreparedStatements 或ResultSets 的中间JDBC 驱动程序也有助于识别应用程序的问题部分。

【讨论】:

谢谢,但我们不使用 PreparedStatement,我们使用 Spring JdbcTemplate *docs.spring.io/spring-framework/docs/2.5.x/api/org/…) 所以我们不需要明确OPEN CLOSE 连接。你有一些“中级 JDBC 驱动程序”的链接吗? spring jdbc 模板面临同样的问题。你发现问题了吗?【参考方案2】:

这是那个版本的 Spring 的错误。更新 Spring 库

【讨论】:

以上是关于ORA-01000 - 超出最大打开游标 - Spring JDBC 3.2.5的主要内容,如果未能解决你的问题,请参考以下文章

错误 ORA-01000: 超出最大打开游标

Doctrine + Oracle = 超出最大打开游标 (ORA-01000)

ORA-01000: 超出最大打开游标 - java 代码失败

ORA-01000 - 超出最大打开游标 - Spring JDBC 3.2.5

跨线程共享的 django 连接导致 ora-01000 超出最大打开游标

使用 Oracle 的 Spring Boot 应用程序 - ORA-01000:超出最大打开游标 - 负载测试期间发生错误