Con la versión 2.5 de Firebird se agregó algo que puede ser muy útil: Trace Manager.

¿Qué hace Trace Manager?

Nos permite conocer todas las conexiones realizadas a una Base de Datos y todas las transacciones, en tiempo real, o sea apenas ocurren.

El programa que realiza esta tarea se llama FBTRACEMGR.EXE y lo encontrarás en la carpeta \BIN\ de tu instalación del Firebird.

Tarea a realizar:

Queremos monitorear todas las actividades que realiza el Servidor del Firebird, para ello necesitaremos hacer lo siguiente:

  1. Crear un archivo de configuración donde podremos determinar, entre otras cosas:
    • Monitorear todo lo que ocurre en una conexión
    • Monitorear todas las actividades de un usuario
    • Monitorear todas las transacciones en una o varias bases de datos
  2. Ejecutar el programa FBTRACEMGR.EXE con el archivo de configuración anterior
  3. Opcionalmente (y preferiblemente) en lugar de enviar los resultados a la pantalla del monitor podemos enviarlos a un archivo de texto y de esa manera será muy fácil posteriormente revisar ese archivo de texto y conocer exactamente lo que ocurrió en la Base de Datos

Enconces, empezaremos creando con el bloc de notas del Windows un archivo de texto donde guardaremos la configuración a utilizar:

TRACE1

Captura 1. Si haces clic en la imagen la verás más grande

Las de arriba no son las únicas opciones posibles, hay más, en la Captura 2 las encontrarás a todas:

TRACE2

Captura 2. Si haces clic en la imagen la verás más grande

Ahora que ya hemos creado un archivo de configuración podemos ejecutar el programa FBTRACEMGR.EXE y empezar a monitorear todo lo que acontece dentro de la Base de Datos.

TRACE3

Captura 3. Si haces clic en la imagen la verás más grande

En lugar de localhost: puedes necesitar escribir la dirección IP de tu Servidor, opcionalmente seguido por una barra y el número del puerto de conexión, algo como:

192.168.0.1/3051:

Abrimos ahora otra ventana “Símbolo del sistema” y ejecutamos en ella el programa ISQL.EXE y nos conectamos a una Base de Datos para ver lo que sucede con nuestro monitoreo:

TRACE4

Captura 4. Si haces clic en la imagen la verás más grande

Y en la otra ventana del sistema (en la cual habíamos ejecutado el programa FBTRACEMGR.EXE) vemos esto:

TRACE5

Captura 5. Si haces clic en la imagen la verás más grande

“Trace session ID 3 started” nos indica que esta es la tercera sesión del TraceManager que hemos iniciado hoy.

“TRACE_INIT” nos indica que se inició el Trace.

“COMMIT_TRANSACTION” nos indica que una transacción terminó con un COMMIT.

“ATT_4979” nos indica que esta es la conexión número 4.979 a la Base de Datos desde que fue creada.

“SYSDBA” nos indica quien fue el usuario que se conectó a la Base de Datos. El “:NONE” después de su nombre nos indica que no usó un rol para conectarse. Si un usuario utiliza un rol, el nombre de ese rol aparecerá aquí.

“XNET:WALTER-PC” nos indica la forma de conexión (a través de XNET en este caso, también podría haber sido a través de una dirección IP) y el nombre de la computadora (o la dirección IP si aplica).

“C:\Archivos de programa\…” es el nombre del programa que se usó para conectarse a la Base de Datos. En este caso el nombre de ese programa fue ISQL.EXE pero lo normal es que se trate del nombre de tu aplicación (Contabilidad, Facturación, Ventas, Sueldos, etc.)

“TRA_90742” es el número de la transacción. En este caso fue la transacción número 90.742.

“CONCURRENCY | WAIT | READ_WRITE” indican los parámetros de la transacción. En este caso la transacción fue SNAPSHOT, WAIT, READ WRITE, en otros casos podría ser: READ COMMITTED, NO WAIT, READ ONLY, REC_VERSION, NO_REC_VERSION, etc.

“START_TRANSACTION” nos indica que se inició una transacción.

“EXECUTE_TRIGGER_FINISH” nos indica que finalizó la ejecución de un trigger cuyos datos vemos un poco más abajo.

Y bueno, puede mostrarte más información relacionada pero ya la puedes descubrir por tí mismo, para eso eres lo suficientemente inteligente como para entender lo que ocurre.

Si quieres que el programa FBTRACEMGR.EXE no envíe la información a la pantalla sino que la envíe a un archivo de texto le puedes redireccionar la salida con el símbolo mayor que, como se muestra a continuación:

TRACE6

Captura 6. Si haces clic en la imagen la verás más grande

Entonces, más tarde podrás revisar el contenido del archivo MONITOREO1.TXT (desde luego que ese nombre es un ejemplo, tú puedes elegir cualquier otro nombre).

TRACE7

Captura 7. Si haces clic en la imagen la verás más grande

Conclusión:

Poder “trazar” las operaciones que ocurren dentro de una Base de Datos puede resultarnos muy pero muy útil cuando vemos que hay problemas con ella, por ejemplo si hay transacciones que no terminan eso nos indica un problema con una aplicación (Contabilidad, Facturación, Ventas, etc.) y debemos encontrar cual es el módulo que abrió una transacción pero nunca la cerró porque las transacciones que se abren y nunca se cierran solamente pueden causar problemas y nunca nos otorgarán algún beneficio. También podemos saber si un usuario se conectó hoy, a que hora se conectó, que operaciones realizó, etc.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

Anuncios