最近遇到一个ORA-1000,“maximum open cursors exceeded“

ORA-1000,"maximum open cursors exceeded"。

网上找了很多,修改

show parameter open_cursors

 alter system set open_cursors=2000;改成两千了还是会出现问题,

尝试每隔100个,等待1秒,到4秒。还是会出现重复的问题。

经过分析,发现其实就针对一个SQL,不同参数。这个操作每次回有1400多次循环,每次执行两个SQL。

后续发现。ORacle的游标是为为了高效利用相同SQL。才打卡的游标。

所以就提供了另一个思路。

如何让同样功能的SQL在Oracle中就代表同样的SQL。

经排查,SQL中存在Like这样的模糊查询。每次都是拼接的SQL。也就是说,随着参数不同,提交的SQL也是不同的。

我当前的这个功能就会生成2800多个不同的SQL。

所以解决思路是:清理拼接SQL中的动态组装部分。

使用预编译SQL。将模糊查询重SQL中七里出来。参数化。执行后,效果明显,不再报错了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值