Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法

Posted 挣扎的蓝藻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法相关的知识,希望对你有一定的参考价值。

java.sql.SQLException: ORA-01000: 超出打开游标的最大数 问题在一个大数据量的嵌套循环下 close() 关闭 createStatement() 根本无效,即使把执行过程封装在类里,而用循环来调用类也会有问题。

原因:
close() 后游标里缓存的资源并不会被释放,而是返回给数据库连接池,直到退出最外层的循环,才会自动被释放。

解决方案:
方案一: 如果数据库不是超级大,一般通过直接在数据库里调大 open_cursors 游标参数可解决问题。
方案二: 超大数据量的话,要拆分大量数据为小量的数据,把循环放在类里进行封装,最后把结果拼起来就好了。

show parameter open_cursors; 可以查看游标的最大值。
alter system set open_cursors=5000 scope=both; 可以设置游标的最大值。

喜欢的点个赞❤吧!

以上是关于Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法的主要内容,如果未能解决你的问题,请参考以下文章

Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法

java 在oracle中执行插入哪种方式比较快

java连接oracle数据库,显示表或视图不存在

sql2008如何连接操作oracle

如何用java语言中如何执行sql查询语句

oracle查询未释放连接的sql