Spring 5.0.1 namedJdbcTemplate batchUpdate ORA-01000:超过最大打开游标
Posted
技术标签:
【中文标题】Spring 5.0.1 namedJdbcTemplate batchUpdate ORA-01000:超过最大打开游标【英文标题】:Spring 5.0.1 namedJdbcTemplate batchUpdate ORA-01000: maximum open cursors exceeded 【发布时间】:2017-10-31 20:29:27 【问题描述】:我最近将我的项目从 Spring Framework 4.3.10 升级到了 5.0.1。 升级后,namedParameterJdbcTemplate.batchUpdate 开始失败并出现此错误
ORA-01000: 超出最大打开游标数。
批量更新 250 条记录的时间没有改变,并且在 Spring 4.3.x 中运行良好。
有没有人在 Spring 5.0.1 中遇到过类似的问题?
我没有看到 Spring 文档中与使用 batchUpdate 相关的任何更改。
任何线索或者它是jire问题的候选者。
我已将 spring-jdbc 单独回滚到版本 4.3.10,从而解决了该问题。 我还提出了一个 Jira 回归缺陷https://jira.spring.io/browse/SPR-16139
【问题讨论】:
天哪,为什么你会同时打开这么多游标?读完后应该关闭未使用的游标,你知道吗? 似乎经常和spring一起报道,但不是在版本更改后tomkaspblog.wordpress.com/tag/jdbctemplate***.com/questions/1436436/… 【参考方案1】:通过 Spring JIRA 票证交换信息后,以下解决了该问题:
-
升级到最新的 Oracle JDBC 驱动程序 12.2.0.1 (ojdbc8.jar)
使用条目创建 spring.properties 文件:
spring.jdbc.getParameterType.ignore=true
Oracle 驱动程序升级解决了游标泄漏问题。 spring.properties 文件解决了 spring-jdbc 版本 5.0.1 的性能问题。
我希望 spring-jdbc 5.0.2 中会有一些更改,无需创建自定义 spring.properties 文件即可解决问题。
感谢 Spring 团队的 Juergen Hoeller 解决了这个问题。
【讨论】:
他们解决了这个问题吗? 我们需要在哪里创建 spring.properties ?【参考方案2】:是的,该问题已在 Spring 5.0.2 中解决:
https://github.com/spring-projects/spring-framework/issues/20687
【讨论】:
需要将 spring.properties 添加到资源文件夹中。同时在 Spring Boot 中,需要将条目添加到现有的 application.yaml 中。对于较新版本的 Spring,我认为问题不存在。以上是关于Spring 5.0.1 namedJdbcTemplate batchUpdate ORA-01000:超过最大打开游标的主要内容,如果未能解决你的问题,请参考以下文章
带有 Spring Boot 和 websphere 8.5.0.1 的 JPA 2.1
org.springframework.beans.factory.UnsatisfiedDependencyException 使用 Spring web-mvc 5.0.1.RELEASE 和 H
得到了JdkVersion classNotFoundException