Oracle Live

11/04/2016

QUERY – SQL_ID mas pesados desde el repositorio de ASH

Filed under: Queries — mogukiller @ 11:50 pm
Tags:

Es bastante conocida por todos la vista gv$active_session_history. Esta query nos extrae las queries mas pesadas ordenadas por su tiempo de CPU o por el tiempo que lleva esperando.

/*
(Inst,SID,SERIAL)    SQL_ID        USERNM     PROGRAM       TYPE            CPU       WAIT EVENT
-------------------- ------------- ---------- ------------- -------- ---------- ---------- -----------------------------
2 - (454/40613)      1vg0c5xwbzn7p JE         sqlplus@tesol SELECT            0       1799 SQL*Net message from dblink
2 - (951/37023)      d806w4sjxxhkb JE         oracle@tehol0 SELECT            0       1799 SQL*Net message from dblink
2 - (1277/41995)     d806w4sjxxhkb JE         oracle@tehol0 UNKNOWN           0       1799 cursor: pin S wait on X
2 - (458/57757)      ccqqb2r7guhcw JE         sqlplus@tesol SELECT            0       1799 SQL*Net message from dblink
2 - (837/31795)      5ph4tt7y8d1sm JE         oracle@tehol0 SELECT            0       1799 SQL*Net message from dblink
2 - (13/38174)       a85fb01gzpsy1 JE         JDBC Thin Cli INSERT            4          0 db_cpu
*/

col type for a15
col usernm for a10
col event for a40
col program for a30
col totales for a 10
col info_sesion FOR A20 HEAD '(Inst,SID,SERIAL)'
col totales noprint
select 
		inst_id||' - ('||session_id||'/'||session_serial#||')' as info_sesion,
        sql_id,
		(select username from dba_users where user_id = a.user_id) usernm,
       PROGRAM,
       type,
       cpu,
       wait,
       io,
	   sum(total) over (partition by session_id, session_serial#, sql_id) totales, 
       event
  from (select ash.inst_id,
			   ash.session_id,
			   ash.session_serial#,
               ash.user_id,
               ash.SQL_ID,
               substr(ash.program,1,30) as program,
               aud.name type,
               sum(decode(ash.session_state, 'ON CPU', 1, 0)) cpu,
               sum(decode(ash.session_state, 'WAITING', 1, 0)) - sum(decode(ash.session_state,'WAITING', decode(wait_class, 'User I/O', 1, 0),0)) wait,
               sum(decode(ash.session_state,'WAITING', decode(wait_class, 'User I/O', 1, 0),0)) io,
               sum(decode(ash.session_state, 'ON CPU', 1, 1)) total,
			   decode(ash.event, NULL, 'db_cpu', ash.event) event
          from gv$active_session_history ash, audit_actions aud
         where SQL_ID is not NULL
           and ash.sql_opcode = aud.action
           and ash.sample_time > sysdate - &minutes / (60 * 24)
         group by inst_id,
				ash.session_id,
				ash.session_serial#,
                  user_id,
                  sql_id,
                  PROGRAM,
                  aud.name,
                  event
         order by sql_id ) a
 where rownum <= 50 
 order by totales desc
/

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: