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ètre | Type | Par défaut | Signification |
|---|---|---|---|
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 |