ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 出错"ORA-01000: maximum open cursors exceeded"怎么解决

出错"ORA-01000: maximum open cursors exceeded"怎么解决

原创 Linux操作系统 作者:wwd_wang 时间:2009-09-18 08:37:55 0 删除 编辑
http://www.itpub.net/viewthread.php?tid=25663&extra=&page=1
我们系统的数据量比较大,近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_cursor查询,发现有几百条的INSERT语句游标没有释放。

开始怀疑是程序调用的问题,仔细检查程序没有发现问题。但是发现对某张表进行TRUNCATE操作后,对此表进行插入的游标全部释放,于是开始怀疑是表结构本身的问题。

重新设置了建表参数,将数据量最大的表的INITIAL和NEXT均设置为50M。
ALTER TABLE tablename STORAGE( INITIAL N NEXT N);

至今未再出现同样的错误。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12137615/viewspace-614943/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 命令重導向
请登录后发表评论 登录
全部评论

注册时间:2008-05-08

  • 博文量
    236
  • 访问量
    193254