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