操作oracle出现maximum open cursors exceeded

kingwords 2009-07-09 02:54:41
进行批量插入的时候 出现 maximum open cursors exceeded

用的ibatis操作的数据库


用的是cop3连接池


请问怎么解决


...全文
419 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinya2003 2009-07-09
  • 打赏
  • 举报
回复
这个一般是因为程序中没有及时关闭游标导致的.

理论上讲,你可以加大 OPEN_CURSORS 参数的值,但是如果没有好的写程序的习惯, 增加了100还是可能会提示出错的.

你可以把逻辑写在服务器上,如果是显式打开游标,则需要显式地去关闭,使用隐式的则系统会自动关闭.
shiyiwan 2009-07-09
  • 打赏
  • 举报
回复
kingwords 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kingwords 的回复:]
ibatis 是用 spring 的支持 getSqlMapClientTemplate() 应该不存在 连接 未关闭问题
[/Quote]


语句 如何 优化 插入 语句 怎么优化? 好像insert 没有 优化的说法吧
kingwords 2009-07-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 soulx 的回复:]
打开的游标超过最大数了,有两种解决方案:
1.优化SQL语句或流程。
2.如楼上说的,增加打开游标的最大数。
[/Quote]

是啊 ALTER SYSTEM SET OPEN_CURSORS= 这个改了也没用 程序 跑时间长了 一样崩溃
robin_ares 2009-07-09
  • 打赏
  • 举报
回复
ALTER SYSTEM SET OPEN_CURSORS=
但这不是解决问题的方法,不治本

在pl/sql里注意 colse 游标
在程序端注意关闭连接,比如java: prepstmt.executeUpdate(); prepstmt.close();
soulx 2009-07-09
  • 打赏
  • 举报
回复
打开的游标超过最大数了,有两种解决方案:
1.优化SQL语句或流程。
2.如楼上说的,增加打开游标的最大数。
kingwords 2009-07-09
  • 打赏
  • 举报
回复
ibatis 是用 spring 的支持 getSqlMapClientTemplate() 应该不存在 连接 未关闭问题
hyrongg 2009-07-09
  • 打赏
  • 举报
回复
多数应用程序写得有问题,检查一下程序,CURSOR 打开没有关闭


SQL> SHOW PARAMETERS OPEN_CURSORS;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
open_cursors integer 300

SQL> ALTER SYSTEM SET OPEN_CURSORS=400;

System altered
zuzuou 2009-07-09
  • 打赏
  • 举报
回复
你的脚本里面包含的语句太多了。
解决办法有2:
1.将脚本拆成几份,分几次插入
2.在命令行模式下面执行,或者用sqlplus来执行sql脚本

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧