日期:2014-05-17  浏览次数:20888 次

关于ORA-01000: maximum open cursors exceeded
在Delphi下面正常使用ADo访问   Oracle(8i)数据库,出现异常,异常内容是ORA-01000:   maximum   open   cursors   exceeded,我修改了程序,每次打开ADoQuery,使用完毕后关闭ADoquery,再程序结束的时候关闭ADoConnection,可是仍然经常出现上面大的异常,我再网上查了一下说是同时打开的游标太多导致的,不知道如何避免该错误的发生?

------解决方案--------------------
可能是就要很多cursor,修改数据库参数open_cursors,改大点即可。
------解决方案--------------------
你要贴出你的访问数据库的SQL语句,有可能语句写的有问题
------解决方案--------------------
增大数据库参数open_cursors
------解决方案--------------------
默认是300,如果有可能300以上用户同时执行更新操作的话就会出现该问题,如果每个用户都是只在更新是用一下游标然后就关闭,那么一定是代码里有某一部分循环打开游标的,请仔细检查代码,我对delphi不太熟,不知道它有没有类似于java里的statement对象的对象,在连接上循环创建打开和关闭游标的对象会造成游标资源耗竭,这也可能导致该问题;
你可以先把游标数根据系统业务量增大,如果还不行或者本身系统只处于开发/测试阶段没多少业务的话,那就好好检查代码吧
------解决方案--------------------
initORCL.ora里应该有一条
*.open_cursors=300
没有的话加上条试下看(一定要大于300,因为默认的就是300)