一般来说是游标不够用了。
只需在initSID.ora文件中加上一行
open_cursors = ****
但是,很可能是由于你的程序或数据库的结构存在着一些潜伏的问题,如jlandzpa所说,没有关闭游标等。
我的程序有一阵一直在报这个错误,把OPEN_CURSOR加大到了300甚至1000还在出错,后来发现是表的STORAGE设置有问题。
建议你查一下自己的程序。
Good Luck!
yangtingkun 发表于 2002-4-9 10:07:20 昨天说的有些错误,应该是physical_attributes_clause语句。
我们系统的数据量比较大,近200张表,有些表一天要插入1000000条左右的数据。
表是使用ER/STDIO设计的,然后直接生成建表的脚本,由于没有设置physical_attributes_clause语
句中的建表参数,因此使用了默认的参数。好像是INITIAL 10K NEXT 10K PCTFREE 20 PCTUSED 50
由于表的存储空间太小,在很短的时间内就会装满,因此ORACLE就需要不停为30多张表(数据量较大的)申请空间。于是在程序运行了一段时间后,开始出现ORA-01000: maximum open cursors exceeded的错误。
我将游标大小改到了300,还是出现错误,改到1000以后开始出现了ORA-01001:invalid cursors。再怎么加大open_cursors的数量都无济于事。
使用select * from v$open_cursors查询,发现有几百条的INSERT语句游标没有释放。
开始怀疑是程序调用的问题,仔细检查程序没有发现问题。但是发现对某张表进行TRUNCATE操作后,对此表进行插入的游标全部释放,于是开始怀疑是表结构本身的问题。
重新设置了建表参数,将数据量最大的表的INITIAL和NEXT均设置为50M。
至今未再出现同样的错误。
(###)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。