Aller au contenu

Service SQL IBM i (AS/400) · Procédure

QSYS2.EXTRACT_STATEMENTS

Extraire les instructions SQL d'un moniteur

Extrait les instructions SQL d'un moniteur ou d'un instantané du cache de plans vers une table, avec des colonnes, des prédicats et un tri supplémentaires au choix.

À quoi ça sert

La procédure QSYS2.EXTRACT_STATEMENTS lit une table de moniteur ou d'instantané (MONITOR_SCHEMA, MONITOR_NAME) et en extrait les instructions SQL. On peut ajouter des colonnes (ADDITIONAL_SELECT_COLUMNS), des conditions (ADDITIONAL_PREDICATES) et un tri (ORDER_BY), et diriger le résultat vers une table (OUTPUT_SCHEMA, OUTPUT_TABLE).

Elle prolonge DUMP_PLAN_CACHE_TOPN : on capture les requêtes les plus lourdes, puis on en extrait le texte avec leur temps total et leur utilisateur. Elle écrit dans une table de sortie et n'a pas de mode aperçu (PREVIEW).

Résultat réel sur un IBM i 7.5

Procédure non exécutée sur notre IBM i de test : elle agit sur la configuration du système ou sur d'autres travaux.

L'exemple d'IBM

Examiner les curseurs SQL actifs du travail courant (l'exemple capture en réalité les 25 requêtes les plus lourdes, puis en extrait les 10 premières par temps total).

-- Description: Review the active SQL cursors for the current job 
 CALL QSYS2.DUMP_PLAN_CACHE_TOPN('QTEMP', 'SNAPIT', 25); 
 CALL QSYS2.EXTRACT_STATEMENTS('QTEMP', 'SNAPIT', 
    'QQI6 AS TOTAL_TIME, QVC102 AS USER_NAME', 
    'AND QQJFLD in (select qqjfld from 
    QTEMP.SNAPIT where qqrid = 1000 
    order by qqi6 desc fetch first 10 rows only) ', NULL, NULL);

Bon à savoir

Les colonnes (QQI6, QVC102…) viennent de la table du moniteur ; on les renomme avec AS dans ADDITIONAL_SELECT_COLUMNS pour obtenir un résultat lisible.

Paramètres

ParamètreTypePar défautSignification
MONITOR_SCHEMA VARCHAR(10) obligatoire Bibliothèque du moniteur
MONITOR_NAME VARCHAR(10) obligatoire Nom du moniteur
ADDITIONAL_SELECT_COLUMNS VARCHAR(5000) NULL Colonnes de sélection supplémentaires
ADDITIONAL_PREDICATES VARCHAR(5000) NULL Prédicats supplémentaires
ORDER_BY VARCHAR(5000) NULL Critère de tri
OUTPUT_SCHEMA VARCHAR(258) NULL Bibliothèque de la table de sortie
OUTPUT_TABLE VARCHAR(258) NULL Nom de la table de sortie