Java程序异常 open cussors查询 ORA-01000: maximum open cursors exceeded ORA-06512: at "××××××", line ×× 通

来源:互联网 发布:淘宝客推广计划怎么写 编辑:程序博客网 时间:2024/06/05 06:06
Java程序异常 open cussors查询


ORA-01000: maximum open cursors exceeded
ORA-06512: at "××××××", line ××


通过如下语句进行open cussors查询
select a.value, 
s.username, 
s.sid, 
s.serial# 
from v$sesstat a, 
v$statname b, 
v$session s 
where a.statistic# = b.statistic# 
and s.sid = a.sid and username='TEST' 

and b.name = 'opened cursors current'; 



网上有描述.

 

 案例来自itpubyangtingkun
 “
我们系统的数据量比较大,近200张表,有些表一天要插入1000000条左右的数据。表是使用ER/STDIO设计的,然后直接生成建表的脚本,由于没有设置physical_attributes_clause语句中的建表参数,因此使用了默认的参数。好像是INITIAL10K NEXT 10K PCTFREE 20 PCTUSED 50由于表的存储空间太小,在
 
很短的时间内就会装满,因此Oracle就需要不停为30多张表(数据量较大的)申请空间。于是在程序运行了一段时间后,开始出现ORA-01000:maximum open 
 cursors exceeded
的错误。我将游标大小改到了300,还是出现错误,改到1000以后开始出现了ORA-01001:invalidcursors。再怎么加大open_cursors的数量都
 
无济于事。使用select * from v$open_cursors查询,发现有几百条的INSERT语句游标没有释放。 
 
开始怀疑是程序调用的问题,仔细检查程序没有发现问题。但是发现对某张表进行TRUNCATE操作后,对此表进行插入的游标全部释放,于是开始怀疑是表结构本
 
身的问题。重新设置了建表参数,将数据量最大的表的INITIALNEXT均设置为50M。至今未再出现同样的错误。


阅读全文
0 0
原创粉丝点击