oracle打开游标

发布于 2024-11-08 19:48:33 字数 461 浏览 0 评论 0原文

我们使用的是 ORACLE AS 10g 和 DB 10g (10.0.1)。我们在 AS 上维护一个数据库连接池。我们的应用程序是基于 Web 的。我们正在正确关闭 java 端的结果集和语句。但我们经常收到打开游标超出的错误。目前在生产中我们将限制设置为 5000。 我们使用以下查询来检查当前打开的游标

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)

“打开游标”的计数正在增加,除非我们重新启动应用程序服务器,否则它无法减少。 因为我们正在使用连接池,所以游标没有关闭? 请指导我们应该做什么。我们还会关注哪些其他领域。

We are using the ORACLE A.S 10g and D.B 10g (10.0.1). We maintain a pool of D.B connection on A.S. Our application is web based. We are properly closing the resultset and statement on java side. But we often receive the error open cursor exceeded. Currently on production we set the limit to 5000.
We use following query to check the currently 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)

The count of ‘open cursor’ is increasing it cannot be reduce until we restart our application server.
Because we are using the connection pooling that is why cursors are not closed?
Please guide us what should we do. What other areas we will look.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执笔绘流年 2024-11-15 19:48:33

查找重复违规者:

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

存储过程/函数返回的引用游标也需要关闭。

to find repeat offenders:

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

Ref Cursors that are returned by stored procedures/functions need to be closed too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文