FAQ - Preguntas frecuentes sobre Oracle - ¿Cómo puedo obtener una traza de todas las sentencias ejecuta

4 - ¿Cómo puedo obtener una traza de todas las sentencias ejecuta

[editar]
Monografía creado por José Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
Oracle nos permite obtener una traza de todas las instrucciones que se lancen en una sesión determinada. Puede ser útil para ver el plan de ejecución de cada una de ellas, para averiguar las instrucciones SQL que son lanzadas contra una base de datos (cuando no disponemos de los fuentes de un programa concreto), o incluso para detectar qué instrucción ralentiza un proceso complejo.


Los pasos a dar son:


a) Obtener el 'sid' y 'serial#' del proceso sobre el que queremos hacer la traza. Para ello debemos hacer la siguiente consulta sobre V$SESSION:


SELECT username, program, sid, serial#
FROM v$session
ORDER BY 1, 2;


Dentro de la tabla resultado, buscaremos nuestro proceso, por ejemplo:


USERNAME PROGRAM SID SERIAL#



SCOTT DELPHI32.EXE 9 30


b) Ejecutar el siguiente bloque de código PL/SQL:


BEGIN
SYS.DBMS_SYSTEM.set_sql_trace_in_session(9, 30, TRUE);
END;


Esto nos activa la traza para una sesión identificada por sid y serial#


c) Ejecutar todas las instrucciones sobre las que queremos hacer la traza. Esto puede ser una instrucción concreta, un proceso completo, o incluso una jornada entera de trabajo con un programa.


d) Ejecutar de nuevo el bloque de código para desactivar la traza:


BEGIN
SYS.DBMS_SYSTEM.set_sql_trace_in_session(9, 30, FALSE);
END;


e) En el directorio configurado para la salida aparecerá nuestro archivo de traza ORAxxx.trc. Este directorio se configura desde la opción USER_DUMP_DEST del archivo INIT.ORA. Por defecto tiene el valor ORACLE_HOME/rdbms/trace.


f) Formatear el archivo de traza a través de la utilidad TKPROF, situada en el directorio BIN de la instalación de Oracle. Una llamada básica podría ser la siguiente:


TKPROF <fichero_traza> <fichero_salida> [explain=usuario/password] [sys=no]


Con el parámetro "explain=usuario/password" indicamos que nos muestre el plan de ejecución de todas las instrucciones, conectándose para ello al usuario/password indicados.
Con el parámetro "sys=no" indicamos que no nos muestre las instrucciones realizadas por el usuario SYS.


Además de las instrucciones y su plan de ejecución, el archivo de traza nos proporciona información sobre las sentencias erroneas, los tiempos de ejecución, el optimizador utilizado, etc.
[editar]

Sé el primero en opinar


Monografías relacionados con 'FAQ - Preguntas frecuentes sobre Oracle'

Lista de FAQs que he ido recopilando durante los tres años que trabajé con Oracle,... Más »
Las Pequeñas y Medianas empresas (PYME’s) necesitan incorporar tecnología a sus estrategias de negocio para... Más »

Autor y licencia de 'FAQ - Preguntas frecuentes sobre Oracle'


Monografía de José Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.