miércoles, febrero 18, 2009

Controla los procesos de la base de datos II




Hace unos meses comentaba que en cualquier base de datos es importante controlar los procesos pesados para saber donde están los cuellos de botella.

Aquella vez utilizamos el DBMS_SUPPORT.START_TRACE_IN_SESSION

Hoy vamos a hacer algo parecido pero de otra forma. El objetivo va a ser el mismo: Tracear una sesión en lugar de todo el sistema. De esta forma las trazas serán de menor tamaño y más fáciles de analizar.

Lo primero es abrir dos sesiones Oracle. Una es la que lanza el proceso que queremos controlar. La otra para activar las trazas.

Para activar las trazas abrimos hay que iniciar sesión como dba. Podemos usar el svrmgr, el SQL*Plus, el SQL Worksheet, etc.

svrmgrl
SVRMGR> connect / as sysdba
SVRMGR> select v$process.SPID, v$process.USERNAME from
2> v$process, v$session
3> where v$session.PADDR=v$process.ADDR
4> order by v$session.logon_time;

SPID USERNAME
--------- ---------------
675 oracle
1857 oracle
16521 oracle
16522 oracle

Esa select podemos ejecutarla dos veces. Una, antes de lanzar el proceso a analizar, y otra después. De esta forma estaremos seguros del SPID del proceso.

Si el SPID del proceso es el 16521...

SVRMGR>oradebug SETOSPID 16521
Statement processed.

SVRMGR>oradebug event 10046 trace name context forever, level 12

La segunda sentencia incluirá "bind variables" en el fichero de traza.


Más información en las notas técnicas de ORACLE:

Note 115675.1 How to Trace Sessions Using Event 10046 With Level xx in Oracle Applications

Note 76338.1 Tracing Tips for Oracle Applications

Saludos.

No hay comentarios: