2011-05-18 112 views
1

我们使用ORACLE A.S 10g和D.B 10g(10.0.1)。我们在A.S上维护一个D.B连接池。我们的应用程序是基于Web的我们正确地关闭了java端的结果集和语句。但是我们经常会收到超出打开的光标的错误。目前,对生产,我们将限制设置为5000 我们用下面的查询检查当前打开的游标oracle open cursor

select a.sid, a.value, b.name, b.statistic# 
from v$sesstat a, v$statname b 
where a.statistic# = b.statistic# 
and b.name = 'opened cursors current' 
and a.sid = 555(any sid number) 

“打开的游标”的数量在增加,不能减少,直到我们重新启动我们的应用服务器。 因为我们正在使用连接池,所以游标未关闭? 请指导我们该怎么做。我们还会看什么其他领域。

+0

你是否也关闭连接? (你只提到结果集和语句) – DaveH 2011-05-18 12:12:34

+0

他说他们有一个连接池 – 2011-05-18 12:16:01

+0

但他没有说他使用connection.close()关闭连接,它将连接返回到池。 – DaveH 2011-05-18 12:18:00

回答

0

找到累犯:由存储过程返回

select c.SQL_TEXT, count(*) cnt 
    from v$open_cursor c 
    group by c.SQL_TEXT 
    order by cnt desc 

REF游标/功能需要太封闭。