it-swarm.com.de

So finden Sie aktuelle offene Cursor in Oracle

Was ist die Abfrage, um das Nein zu finden. der aktuellen offenen Cursor in einer Oracle-Instanz?

Wie hoch ist die Genauigkeit/Aktualisierungsfrequenz dieser Daten?

Ich verwende Oracle 10gR2

31
M.N

Gesamtzahl der geöffneten Cursor nach Sitzung:

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';

Quelle: http://www.orafaq.com/node/758

Soweit ich weiß, basieren Abfragen zu v $ Views auf Pseudo-Tabellen ("x $" -Tabellen), die direkt auf die relevanten Teile der SGA verweisen. Dies bedeutet jedoch auch, dass es sich um einen Zeitpunkt handelt (d. h. fehlerhaftes Lesen).

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

scheint für mich zu arbeiten. 

10
Mark Kluepfel

So finden Sie offene Cursor, die analysiert wurden. Sie müssen als Benutzer mit Zugriff auf v $ open_cursor und v $ session angemeldet sein.

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
;

Wenn Sie einen Teil des SQL-Textes erhalten, kann dies zum Identifizieren von undichten Anwendungen nützlich sein. Wenn ein Cursor nicht analysiert wurde, erscheint er hier nicht. Beachten Sie, dass Oralce die Dinge manchmal länger geöffnet hält als Sie.

8
WW.

1) Ihre ID sollte über sys dba verfügen 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;
1
praveen s

Oracle hat für dieses Problem eine Seite mit SQL- und Fehlerbehebungsvorschlägen.

"Problembehandlung bei Problemen mit dem Cursor" http://docs.Oracle.com/cd/E40329_01/admin.1112/e27149/cursor.htm#OMADM5352

1
Rana Ian

Ich benutze so etwas:

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