Ejemplo de descarga de sentencias SQL de un repositorio SQL

Puede capturar sentencias SQL de datos que se han descargado en tablas de DB2 for z/OS a través de aplicaciones de supervisión de consultas que no son IBM. Para llevar a cabo esta tarea, debe correlacionar las categorías de datos con las columnas de las tablas de DB2 for z/OS que contienen los datos descargados.
La primera sección muestra estas categorías de datos y los tipos de datos que deben utilizarse para las mismas. La segunda sección muestra un ejemplo de los requisitos para capturar sentencias SQL de dichos datos.

Categorías de datos para correlacionar con columnas de DB2

Las columnas de las tablas de DB2 deben contener la siguiente información acerca de las sentencias SQL, sus métricas de tiempo de ejecución y los intervalos de tiempo durante las ejecuciones de las sentencias.

Subsistema DB2
Subsistema DB2 en el que se recopilan las métricas de tiempo de ejecución y las sentencias SQL. (Tipo de datos: SQL CHAR o VARCHAR)
Nombre del plan
Nombre del plan de DB2. (Tipo de datos: SQL CHAR o VARCHAR)
Colección
ID del plan o la colección de paquetes de DB2. (Tipo de datos: SQL CHAR o VARCHAR)
Nombre de paquete
Nombre del paquete de DB2. (Tipo de datos: SQL CHAR o VARCHAR)
Señal de consistente del paquete
Señal de consistente de DBRM o del paquete de DB2. (Tipo de datos: SQL CHAR o BINARY)
ID de autorización primaria
ID de autorización primaria utilizado para ejecutar la sentencia. (Tipo de datos: SQL CHAR o VARCHAR)
Texto de sentencia
Texto de la sentencia SQL, que puede ser toda la sentencia o un fragmento de la misma. (Tipo de datos: SQL CHAR, VARCHAR o BINARY)

Este texto se puede dividir en segmentos que estén en otras filas. El ID de sentencia exclusivo y el número de secuencia aseguran que los segmentos se concatenen correctamente.

La aplicación de supervisión de consulta puede descargar sentencias SQL estáticas en la columna STMT del la tabla de catálogo SYSIBM.SYSPACKSTMT. La tabla guarda el texto de SQL en formato BINARY. Si la aplicación que utiliza descarga sentencias SQL estáticas en esta tabla, debe utilizar la función HEX() para convertir la sentencias del formato BINARY en series hexadecimales. Realice la conversión en la vista que defina para combinar esta columna con la tabla de métricas de ejecución e información sobre los intervalos de tiempo en los que se recopilan métricas.
ID de sentencia exclusivo
ID exclusivo para la sentencia; se utiliza para identificar fragmentos del texto de la sentencia que se encuentran en filas distintas de una tabla. (Tipo de datos: SQL CHAR, VARCHAR o BINARY)
Número de secuencia de la sentencia
Número que describe el orden en el que un segmento de una sentencia puede concatenarse con otros segmentos de la misma sentencia. (Tipo de datos: SQL INT o SMALLINT)
Inicio del intervalo
Inicio del intervalo en el que se recopilaron las métricas de sentencia. (Tipo de datos: SQL TIMESTAMP)
Fin del intervalo
Fin del intervalo en el que se recopilaron las métricas de sentencia. (Tipo de datos: SQL TIMESTAMP)
Número de sección
Número de sección en el paquete de DB2 en el que se ubica la sentencia SQL. (Tipo de datos: SQL INT o SMALLINT)
Número de sentencia
Número de sentencia dentro del paquete de DB2. (Tipo de datos: SQL INT o SMALLINT)
Número de ejecuciones
Número de veces que se ha ejecutado la sentencia SQL. (Tipo de datos: SQL INT o SMALLINT)
Tiempo de CPU total
Tiempo de CPU que se ha necesitado para ejecutar la sentencia para el número de veces especificado en el recuento de ejecución. (Tipo de datos: SQL FLOAT o DOUBLE)
Tiempo transcurrido total
Cantidad de tiempo de clase 2 que se ha necesitado para ejecutar la sentencia para el número de veces especificado en el recuento de ejecución. (Tipo de datos: SQL FLOAT o DOUBLE)
Número de obtenciones de página
Número de solicitudes de obtención de página emitidas. (Tipo de datos: SQL INT o SMALLINT)
ID de métrica exclusivo
ID exclusivo para las métricas de ejecución recopiladas para una sentencia SQL; se utiliza para unir la tabla de métricas de ejecución con la tabla que enumera los objetos a los que hacen referencia las sentencias SQL del repositorio. (Tipo de datos: SQL CHAR, VARCHAR o BINARY)

También puede especificar qué columnas contienen información acerca de objetos de base de datos a los que las sentencias SQL hacen referencia, si una tabla contiene esta información.

Calificador de objeto dependiente
Calificador o esquema del objeto referenciado. (Tipo de datos: SQL CHAR o VARCHAR)
Nombre de objeto dependiente
Nombre del objeto referenciado. (Tipo de datos: SQL CHAR o VARCHAR)
Tipo de objeto dependiente
Tipo de objeto referenciado. (Tipo de datos: SQL CHAR o VARCHAR)
Nombre de base de datos
Nombre de la base de datos en la que se encuentra almacenado el objeto referenciado. (Tipo de datos: SQL CHAR o VARCHAR)
Nombre de espacio de tabla
Nombre del espacio de tabla en el que se encuentra almacenado el objeto referenciado. (Tipo de datos: SQL CHAR o VARCHAR)
ID de métrica exclusivo
ID exclusivo para las métricas de ejecución recopiladas para una sentencia SQL; se utiliza para unir la tabla de métricas de ejecución con la tabla que enumera los objetos a los que hacen referencia las sentencias SQL del repositorio. (Tipo de datos: SQL CHAR, VARCHAR o BINARY)

Ejemplo de captura de sentencias SQL de tablas de DB2 for z/OS creadas por una aplicación de supervisión de consultas

Este ejemplo utiliza IBM® DB2 Query Monitor for z/OS, que puede descargar datos en las tablas de DB2 for z/OS, del mismo modo que pueden hacerlo aplicaciones de supervisión de consultas que no son IBM. No obstante, para obtener mejores resultados, utilice la página Capturar SQL de DB2 Query Monitor for z/OS de la sección Capturar del asistente de flujos de trabajo para capturar sentencias SQL de DB2 Query Monitor for z/OS.

Supongamos que utiliza DB2 Query Monitor for z/OS y descarga datos de archivos VSAM en tablas de DB2 for z/OS. Luego desea consultar estas tablas para encontrar información acerca del rendimiento de las sentencias SQL en distintas aplicaciones de base de datos. Si alguna de las sentencias SQL queda por debajo del umbral de rendimiento, su objetivo es ajustar dichas sentencias.

Para capturar y ajustar las sentencias SQL de este repositorio de datos, debe descargar métricas de ejecución, texto SQL e información sobre los intervalos de tiempo.

Estos datos son necesarios para ajustar consultas y proporcionan estas ventajas:

Debe descargar datos en estas tres tablas:

CQMnnINTERVALS
Esta tabla define las horas de inicio y finalización de cada intervalo.
CQMnnSUMM_METRICS
Esta tabla contiene métricas de ejecución que DB2 Query Monitor for z/OS recopila para cada sentencia SQL.
CQMnnSUMM_TEXT
Esta tabla contiene el texto de la sentencias SQL.
Nota: La aplicación de supervisión de consultas puede descargar el texto de las sentencias SQL estáticas en la columna STMT de la tabla de catálogo SYSIBM.SYSPACKSTMT.

Antes de utilizar el asistente de flujos de trabajo para capturar sentencias SQL, debe crear una vista que una estas tres tablas. A continuación se muestra un ejemplo:

CREATE VIEW QM_STMT_VIEW 
  (DB2_SUBSYSTEM, PLAN, COLLECTION, PROGRAM,
   CONSISTENCY_TOKEN, AUTHID, METRICS_TOKEN, TEXT_TOKEN, SQLTEXT, SEQNO,
   INTERVAL_START, INTERVAL_END, SECTION, STMT, SQL_CALLS, DB2_CPU,
   DB2_ELAP, GETPAGES) 
AS
SELECT A.DB2_SUBSYSTEM, A.PLAN, A.COLLECTION, A.PROGRAM, 
   A.CONSISTENCY_TOKEN, A.AUTHID, A.METRICS_TOKEN, A.TEXT_TOKEN, 
   B.SQLTEXT, 0, A.INTERVAL_START, CURRENT TIMESTAMP AS INTERVAL_END_TS, 
   A.SECTION, A.STMT, A.SQL_CALLS, A.DB2_CPU, A.DB2_ELAPSED, A.GETPAGES
FROM QMTOOLS.CQM23_SUMM_METRICS A,  
     QMTOOLS.CQM23_SUMM_TEXT B
WHERE 
   A.TEXT_TOKEN = B.TEXT_TOKEN
   AND A.SMFID = B.SMFID
   AND A.CQM_SUBSYSTEM = B.CQM_SUBSYSTEM    
   AND A.INTERVAL_NUMBER = B.INTERVAL_NUMBER
   AND A.INTERVAL_START = B.INTERVAL_START  
   AND A.INTERVAL_NUMBER IN (       
      SELECT DISTINCT A.INTERVAL_NUMBER
      FROM QMTOOLS.CQM23_INTERVALS A,           
           QMTOOLS.CQM23_SUMM_METRICS B        
      WHERE A.SMFID = B.SMFID
         AND A.CQM_SUBSYSTEM = B.CQM_SUBSYSTEM           
         AND A.INTERVAL_NUMBER = B.INTERVAL_NUMBER               
         AND A.INTERVAL_START = B.INTERVAL_START);

Si la aplicación de supervisión de consultas descarta el texto de las sentencias SQL estáticas en la columna STMT de la tabla de catálogo SYSIBM.SYSPACKSTMT, la vista debe unir esta columna con las tablas CQMnnINTERVALS y CQMnnSUMM_METRICS tables. Esta vista también debe utilizar la función HEX() para convertir el texto de cada sentencia del formato BINARY a un formato de serie hexadecimal.

También puede descargar datos acerca de los objetos de base de datos a los que las sentencias SQL hacen referencia. Deberá descargar los datos en la tabla SUMM_OBJECTS.


Comentarios