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中七里出来。参数化。执行后,效果明显,不再报错了。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐