Inicio » Oracle » Sesiones » Recolectando trazas extendidas en oracle, evento 10046

Recolectando trazas extendidas en oracle, evento 10046

Esto ya lo habíamos visto un poco por encima pero un poco de detalle nunca está mal

10046 Niveles de traza

0 – sin trazas

1 – trazas básicas CURSOR, PARSE, EXEC, FETCH ERROR, SORT UMAP, ERROR, UMAP, STATS y XCTEND. Lo mismo que poner sql_trace=true.

2 – Lo mismo que el nivel 1

4 – Lo mismo que el nivel 1 pero con BIND

8 – Lo mismo que el nivel 1 pero con eventos de espera.

12 – Combina los niveles 4 y 8.

Se tiene que tener el parámetro  timed_statistics=true. (comprobar con un show parameter timed_statistics) . Se puede cambiar a nivel de sistema o de sesión. También es conveniente tener el max_dump_file_size=unlimited para que quepa toda la traza. Si esta limitado el tamaño de traza podemos ver este error

*** DUMP FILE SIZE IS LIMITED TO 10000000 BYTES ***

Para tracear la sesión de uno mismo

SQL> alter session set timed_statistics=true — turn timing on.

SQL> alter session set max_dump_file_size=unlimited

SQL> alter session set tracefile_identifier=’logsesion’ – sirve para identificar el archive de trazas

SQL> alter session set events ‘10046 trace name context forever, level 8’

Ejecutas lo que se quiere tracear

******* run all of your processing here *******

SQL> alter session set events ‘10046 trace name context off’ – se deshabilitan las trazas.

Para tracear la sesión de otro

Es facil si sabemos el sid y el serial#  de la session. Es un poco más dificil con MTS porque con la utilización de pules de conexión una conexión puede ser reutilizada por varios usuarios.

Encontrar la sesión:

set linesize 150
column Name format a14
column SID format 9999
column PID format 99999
column TERM format a15
column OSUSER format a15
column Program format a15
column Stats format a10
column Logon_time format a20
select a.username Name,
        a.sid SID,
        a.serial#, b.spid PID,
        SUBSTR(A.TERMINAL,1,9) TERM,
        SUBSTR(A.OSUSER,1,9) OSUSER,
        substr(a.program,1,10) Program,
        a.status Status,
        to_char(a.logon_time,'MM/DD/YYYY hh24:mi') Logon_time
from v$session a,
     v$process b
where a.paddr = b.addr
and a.serial# <> '1'
and a.status = 'ACTIVE'
and a.username like upper('%&user%') – si se quiere filtrar por un usuario concreto
order by a.logon_time
/

Una vez que tenemos el SID y el  SERIAL#  de la sesión. Podemos utilizar los siguientes paquetes

DBMS_SYSTEM:

SQL> execute sys.dbms_system.set_boo_param_in_session(&&SID, &&SERIAL,’timed_statistics’,true);

— para activar el timed statistics a nivel de sesión de usuario si no está activado a nivel de sistema.

SQL> execute sys.dbms_system.set_in_param_in_session

(&&SID, &&SERIAL, ‘max_dump_file_size’,10000000);

–Lo mimo para el tamaño de la traza.

SQL> execute sys.dbms_system.set_ev(&&SID, &&SERIAL, 10046, 8, ‘ ‘);

— poner a nivel 8 el evento de traceo.

SQL> execute sys.dbms_system.set_ev(&&SID, &&SERIAL, 10046, 0, ‘ ‘);

–desactivar las trazas

Logon trigger:

En algunos sistemas puede ser interesante incluir triger de logon para activar las estadísticas.

Más información en http://www.databasejournal.com/features/oracle/article.php/3469891/Collecting-Oracle-Extended-Trace-10046-event.htm

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