sábado, noviembre 08, 2008

Controla los procesos de la base de datos





Cuando tenemos procesos de usuario pesados es conveniente supervisar la ejecución activando las trazas de la sesión.

¡Ojo!, las trazas normalmente se almacenan en un fichero y llegan a tener un tamaño considerable.


Cómo se hace en Oracle


En Oracle por defecto las trazas se almacenan en /oracle/admin/instancia/udump y me imagino que si se llena el espacio del filesystem al no poder escribir en los logs, etc. tendríamos problemas con la base de datos.

Hay varias herramientas que permiten habilitar las trazas. Con el Grid Control de Oracle por ejemplo nos situamos en la pantalla de sesiones activas y hacemos clic en el botón de activar trazas.

El propio usuario puede habilitar las trazas de su sesión con Toad, SqlServer o lo que quiera. Esta opción es peligrosa porque puede que no tenga en cuenta que el espacio donde se van a almacenar es limitado.

Forma de activar las trazas:

Entramos en SqlPlus y ejecutamos:


EXEC DBMS_SUPPORT.START_TRACE_IN_SESSION(sid, serial#);





EXEC DBMS_SUPPORT.STOP_TRACE_IN_SESSION(sid, serial#);


Interpretación de las trazas:


Oracle trae un programita que obtendrá un informe a partir de la traza. De estar forma tendremos todas las SQL que se han ejecutado e información valiosísima sobre ellas como:



  1. Tiempo de ejecución de CPU en parsing, ejecución de sentencia, etc.


  2. Número de ejecuciones de la sentencia.


  3. Bloques leídos de memoria, de disco, etc.


  4. Si se han utilizado o no índices y cuales.


  5. Plan de ejecución.


  6. Eventos de espera.


  7. Etc. etc.


Lo que hay que hacer para obtener el informe .txt:


tkprof fichero.trc fichero.txt sys=no explain=usuario/password sort=criterio


sort=criterio es opcional. Para saber que poner en criterio ejecutar tkprof a secas y nos lo indicará. Esto sirve para ordenar las SQL por tiempo de ejecución u otro criterio.


Saludos.


No hay comentarios: