Activar la Traza de una Sesión Oracle

En esta ocasión voy a comentar el método para obener una traza de todas las acciones que se realizan en la base de datos a través de una conexión determinada. Esto puede ser de gran utilidad cuando se produce un error en la aplicación y el equipo de desarrollo no tiene muy claro qué puede ser; o incluso los administradores de la base de datos se pueden valer de esta traza para optimizar una conexión en concreto.

La traza no es más que un fichero de texto ASCII legible con cualquier editor de ficheros tipo vi ó notepad. Otra cosa es la interpretación del fichero y la obtención de conclusiones con el mismo; esto ya es harina de otro costal.

Para activar la traza habrá que instalar en la base de datos el paquete DBMS_SUPPORT. Se puede hacer esto siguiendo las instrucciones de la nota 377204.1 de Metalink, o bien como indico a continuación.

En primer lugar, entrar a la base de datos como usuario SYS y ejecutar los siguiente:

SQL> @?/rdbms/admin/dbmssupp.sql
SQL> grant execute on DBMS_SUPPORT to system;
SQL> create public synonym DBMS_SUPPORT for DBMS_SUPPORT;

Hecho ésto, la base de datos se encuentra en disposición de ejecuar procedimientos para activar la traza en determinadas sesiones. Y aquí hago un inciso: la traza en cuestión se obtiene para una sesión en concreto, y solo una. Esta traza, como comenté antes, un fichero ASCII, se deposita en la carpeta $UDUMP, por lo que, para evitar confusiones, no está demás limpiar esa carpeta (que contendrá casi seguro ficheros con la extensión trc), ya que el nombre del fichero es asignado por Oracle; por eso también lo de no trabajar con varias sesiones de forma simultánea.

Para obtener el identificador oracle de una sesión (el sid), se puede lanzar una consulta como la siguiente:

SQL> select sid,serial#,username,ouser from v$session where username='USUARIO';

Una vez obtenido el SID, se activará la traza para ese SID, mediante:

SQL> exec dbms_support.start_trace_in_session(sid,serial#,true,true);

Cuando se considere adecuado, se desactivará la traza:

SQL> exec dbms_support.stop_trace_in_session(sid,serial#);

El fichero trc obtenido en $UDUMP contiene gran cantidad de datos acerca de todas las operaciones que se han realizado en ese intervalo de tiempo a través de la sesión SID. Su edición puede proporcionar información acerca de errores, flujos de ejecución de consultas, etc.

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

A %d blogueros les gusta esto: