ORA-01000和OPEN_CURSORS参数
Dec292011
今天测试环境突然报ORA-01000错误,这个问题之前就出现过,但是已经修复,在程序发布新版本后,该问题又一次出现该错误是程序在做图片加载是产生的,测试人员向数据库中加载2000张图片,在加载第1000张之后的图片,程序报错,查看程序日志,发现ORA-01000错误。
ORA-00604: error occurred at recursive SQL level 1 ORA-01000: maximum open cursors exceeded ORA-00604: error occurred at recursive SQL level 1 ORA-01000: maximum open cursors exceeded ORA-01000: maximum open cursors exceeded
该错误是由于程序忘记关闭游标,这样每次加载一张图片的时候都会打开一个新游标,当打开的游标数超过单个SESSION打开最大游标数限制(OPEN_CURSORS参数的值)的时候,就报ORA-01000错误,OPEN_CURSORS参数11g默认是300,上次程序出现这个错误的时候,我已经将OPEN_CURSORS参数设置为1000,OPEN_CURSORS的值设置的大一些并不会直接占用那么多的资源,而是实际打开的游标才会占用资源,如果需要,可以将这个参数的值设置的大一些,一般情况下1000应该足够了。
SQL> show parameter open_cursors NAME TYPE VALUE --------------------- ----------------- --------------- open_cursors integer 1000
由于程序的问题,所以测试人员导入超过1000张图片的时候,就会报错,程序员修改程序后,问题已经解决。