Anuncios en tutorial de programación PLSQL

martes, 19 de mayo de 2015

Cómo usar la utilidad de trazado del SQL de Oracle

Chiste sobre registrarse en artículo sobre la utilidad de traceado PLSQLLa utilidad de trazado del SQL de las bases de datos Oracle nos permite analizar el rendimiento de un determinado programa PL/SQL. Esta funcionalidad nos va a permitir obtener información acerca del rendimiento de todas las sentencias SQL que se ejecuten durante la ejecución del programa PLSQL.

Para utilizar la herramienta de trazado del PL/SQL de Oracle deberemos seguir cinco pasos:

1) Inicializar los parámetros relativos a esta funcionalidad SQL.
2) Activar la traza SQL.
3) Ejecutar la aplicación que queremos analizar y desactivar la traza cuando termine.
4) Formatear el fichero producido por la traza SQL con el comando TKPROF.
5) Interpretar la salida del comando TKPROF y, si es necesario, optimizar nuestro programa PLSQL.

En este artículo voy a hablar sobre los tres primeros apartados.

Inicialización de los parámetros de trazado Oracle

La utilidad de trazado puede, opcionalmente, proporcionar información acerca de los tiempos de ejecución. Para que esta información quede almacenada es necesario activar el parámetro TIMED_STATISTICS.

Dicho parámetro se puede activar a nivel de base de datos mediante su inclusión en el fichero de parámetros de la base de datos Oracle (nota: una vez incluido el parámetro es necesario reinicializar la base de datos para que el cambio tenga efecto):

TIMED_STATISTICS = TRUE

Este parámetro también se puede asignar dinámicamente a nivel de sesión ejecutando el siguiente comando:

SQL> ALTER SESSION SET timed_statistics=true;

La activación de este parámetro puede afectar ligeramente al rendimiento de la base de datos por lo que normalmente este parámetro está desactivado

Existen otros dos parámetros que nos permiten controlar el tamaño y el nombre del directorio donde se generará el fichero de trazado:

MAX_DUMP_FILE_SIZE = n

USER_DUMP_DEST = nombre_directorio

El valor por defecto del parámetro MAX_DUMP_FILE_SIZE es 500, es decir, que nuestro fichero de trazado podrá ocupar 500 bloques del disco duro. Este parámetro puede cambiar también a nivel de sesión con el comando ALTER SESSION.

El valor por defecto del parámetro USER_DUMP_DEST depende del sistema operativo y no puede ser cambiado a nivel de sesión. Por lo tanto, al ser un parámetro global del sistema, su valor sólo pueden cambiarlo los administradores de la base de datos utilizando el comando ALTER SYSTEM.

Para obtener información acerca de los valores que toman los distintos parámetros podemos ejecutar la siguiente sentencia:

SELECT name, value
FROM v$parameter
WHERE name LIKE ‘%dump%’

Obviamente se necesita tener acceso a la vista (view) V$PARAMETER para poder visualizar esta información.

Activación de la traza SQL

Podemos activar la traza a nivel de sistema mediante la inclusión en el fichero de parámetros de la siguiente línea:

SQL_TRACE = TRUE

Esta posibilidad es poco recomendable y no se debe implementar en ningún sistema en producción. La activación de la traza a nivel de sistema puede afectar seriamente el rendimiento de la base de datos Oracle.

Por ello es mucho más recomendable activar la traza a nivel de sesión con el comando:

SQL> ALTER SESSION SET sql_trace = true;

También se puede utilizar el paquete estándar DBMS_SESSION. Esta posibilidad es particularmente útil si queremos activar y desactivar la traza dentro del un procedimiento o función PL/SQL.

SQL> EXECUTE dbms_session.set_sql_trace (true);

Por otro lado, los DBA (Database Administrators) pueden activar la traza sobre una sesión de usuario concreta utilizando el siguiente comando:

SQL> EXECUTE dbms_system.set_sql_trace_in_session (session_id, serial_id, true);

Los valores session_id y serial_id adecuados los tiene que identificar el DBA mediante el análisis de los registros incluidos en la vista V$SESSION, los campos de esta vista que se corresponden con estos valores son SID y SERIAL#.

Desactivación de la traza SQL

Cuando la ejecución del programa que estamos optimizando termina, debemos proceder a desactivar la traza utilizando cualquiera de los métodos mencionados anteriormente, sustituyendo la palabra TRUE por FALSE.

Si la traza se activó a nivel de sesión, entonces cuando la sesión termina, la traza se desactiva automáticamente.

Identificación del fichero de trazado

Para identificar los ficheros de trazado debemos ir al directorio especificado por el parámetro USER_DUMP_DEST y, normalmente, el fichero de trazado será aquel que se ha generado más recientemente.

La identificación puede complicarse cuando hay varios usuarios generando ficheros de trazado al mismo tiempo. En este caso podemos utilizar un script estándar denominado readtrace.sql. Este script crea un procedimiento que abre nuestro fichero de trazado utilizando el paquete UTL_FILE. El nombre por defecto del fichero de trazado que se genera es username.trc pero puede cambiarse fácilmente.

SQL> @readtrace.sql
SQL> ALTER SESSION SET sql_trace = true;
SQL> SELECT * FROM nombre_tabla;
SQL> execute gettrace (‘nombre_fichero_trazado’);

El siguiente paso sería utilizar el programa TKPROF para poder interpretar el contenido binario del fichero de trazado, pero esto será objeto de otro artículo.

Artículos relacionados: Obtención del plan de ejecución de una sentencia SQL o PLSQL.

0 comentarios: