Tracear una sesión Oracle en muchas ocasiones es necesario para poder realizar tareas de Tuning de la Base de Datos así como para identificar errores que de otra forma sería bastante complicado.
Hay varias formas de tracear sesiones.
Si queremos tracear la sesión actual ejecutaremos la instrucción siguiente desde SQLPLUS:
SQL> ALTER SESSION SET sql_trace = true;
Si queremos añadir un identificador a nuestro archivo de traza para facilitarnos su identificación:
SQL> ALTER SESSION SET tracefile_identifier = mysqltrace;
Para parar el traceado de la sesión actual:
SQL> ALTER SESSION SET sql_trace = false;
Para tracear otras sesiones de usuario usaremos:
DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION
Los pasos son:
Obtener el usuario, SID y SERIAL# de la sesión que queremos tracear.
SQL> select username, sid, serial# from sys.v$session;
USERNAME SID······· SERIAL#
-------- ---------- ----------
JUANH··········· 15······ 8560
Para activar la tracar para la sesión deseada.
SQL> ALTER SYSTEM SET timed_statistics = true;
Y ejecutamos el paquete dbms_system.set_sql_trace_in_session(SID, SERIAL#, true) donde SID y SERIAL# son el SID y el SERIAL# de la sesión que queremos tracear, true para activar la traza.
SQL> execute dbms_system.set_sql_trace_in_session(15, 8560, true);
Realizar operaciones con la sesión a tracear.
Los archico de traza generados los podemos encontrar en el directorio udump, el camino más corto para saber dónde esta este directorio es consultar el parámetro user_dump_dest en la base de datos de la siguiente manera:
Nos conectamos a la base de datos con sqlplus y ejecutamos el comando show parameters user_dump_dest
SQL> show parameters user_dump_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string /u01/app/product/10.2.0.4/admin/PRUEBA001/udump
El fichero generado tendrá como nombre por defecto Nombre_instancia_PID_ora_traceId.trc
Donde:
Nombre_instancia - Será el nombre de la instancia Oracle.
PID - Es el número del proceso de sistema operativo de la sesión.
traceid - Es el identificador que hayamos asignado.
La salida en el fichero de traza .trc es bastante ilegible, Oracle provee la utilidad TKProf, con esta utilidad podremos obtener una fichero más comprensible.
Para desactivar la traza de la sesión seleccionada ejecutamos el paquete,
SQL> execute dbms_system.set_sql_trace_in_session(15, 8560, false);