我们有一个 Java 企业应用程序在 Weblogic Server 12c 上运行,使用Spring JDBC 3.2.5来访问Oracle 11gR2数据库。一段时间后在生产环境中我们得到这个异常: “ORA-01000 - 超出最大打开游标”并且需要重新启动服务器实例;似乎打开的游标越来越多,直到达到 Oracle 上设置的最大阈值。提高门槛并没有解决问题。我们检查了(非常大的)源代码,但目前我们没有发现任何我们错过关闭连接的地方;此外,我们通常不会打开和关闭连接,而是使用 Spring JdbcTemplate 来处理数据库交互。可能是弹簧问题?有什么提示吗?
问问题
3506 次
2 回答
0
oracle 消息“ORA-01000 - 超出最大打开游标”可能是由于没有关闭PreparedStatement
s 或ResultSet
s。每个PreparedStatement
orResultSet
都是 Oracle 数据库中的一个游标。
要在短期内规避此错误,您可以增加数据库中打开游标的限制(但迟早会再次发生)。
要真正规避此错误,您必须审核完整的应用程序并关闭所有打开PreparedStatement
的 s 或ResultSet
s。
PreparedStatement
此外,跟踪所有s 或s的中间 JDBC 驱动程序ResultSet
可以帮助识别应用程序的问题部分。
于 2014-09-22T12:19:56.183 回答
0
这是那个版本的 Spring 的错误。更新 Spring 库
于 2018-08-07T09:52:19.613 回答