如何找到在甲骨文当前打开的游标(How to find Current open Cursors i

2019-06-23 13:34发布

什么是找到没有查询。 在Oracle实例当前打开的游标?

此外,什么是该数据的准确度/更新频率?

我使用Oracle 10gR2中

Answer 1:

总游标开放,通过会话:

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 b.name = 'opened cursors current';

来源: http://www.orafaq.com/node/758

据我所知,在查询V $视图基于伪表(“X $”表),其直接指向SGA的相关部分,所以你不能比这更准确; 然而,这也意味着它是点在时间(即脏读)。



Answer 2:

select  sql_text, count(*) as "OPEN CURSORS", user_name from v$open_cursor
group by sql_text, user_name order by count(*) desc;

似乎为我工作。



Answer 3:

以下是如何找到已经解析打开的游标。 您需要登录为能够访问V $ OPEN_CURSOR和v $ session中的用户。

COLUMN USER_NAME FORMAT A15

SELECT s.machine, oc.user_name, oc.sql_text, count(1) 
FROM v$open_cursor oc, v$session s
WHERE oc.sid = s.sid
GROUP BY user_name, sql_text, machine
HAVING COUNT(1) > 2
ORDER BY count(1) DESC
;

如果给你的SQL文本的一部分,所以它可以识别漏水应用。 如果游标没有被解析,那么就不会出现在这里。 需要注意的是Oralce的有时会保持事物开放的时间比你做的。



Answer 4:

1)你的ID应具有DBA SYS访问2)

select sum(a.value) total_cur, avg(a.value) avg_cur, max(a.value) max_cur, 
 s.username, s.machine
 from v$sesstat a, v$statname b, v$session s 
 where a.statistic# = b.statistic# and s.sid=a.sid
 and b.name = 'opened cursors current' 
 group by s.username, s.machine
 order by 1 desc;


Answer 5:

Oracle有针对此问题与SQL和故障排除建议的页面。

“故障排除打开游标问题” http://docs.oracle.com/cd/E40329_01/admin.1112/e27149/cursor.htm#OMADM5352



Answer 6:

我用的是这样的:

select 
  user_name, 
  count(*) as "OPEN CURSORS" 
from 
  v$open_cursor 
group by 
  user_name;


文章来源: How to find Current open Cursors in Oracle