validar vacio recorrer procedimientos implicito example cursores cerrar almacenados actualizacion abiertos oracle oracle10g cursor

vacio - recorrer cursor oracle



Cómo encontrar Cursores abiertos actuales en Oracle (6)

¿Cuál es la consulta para encontrar el no. de cursores abiertos actuales en una instancia de Oracle?

Además, ¿cuál es la frecuencia de precisión / actualización de estos datos?

Estoy usando Oracle 10gR2


1) tu ID debe tener acceso sys dba 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;


A continuación, le mostramos cómo encontrar los cursores abiertos que se analizaron. Debe iniciar sesión como usuario con acceso a v $ open_cursor y 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 ;

Si le proporciona parte del texto SQL, puede ser útil para identificar aplicaciones con fugas. Si un cursor no ha sido analizado, entonces no aparece aquí. Tenga en cuenta que Oralce algunas veces mantendrá las cosas abiertas más tiempo que usted.


Cursores totales abiertos, por sesión:

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

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

Hasta donde yo sé, las consultas sobre v $ views se basan en pseudo-tablas (tablas "x $") que apuntan directamente a las partes relevantes del SGA, por lo que no puede obtener más precisión que eso; sin embargo, esto también significa que es un punto en el tiempo (es decir, lectura sucia).



Yo uso algo como esto:

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


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

parece funcionar para mí