Recette SQL IBM i (AS/400) · Travaux
Les travaux actifs depuis plus de 24 heures
Les travaux actifs depuis plus de 24 heures, avec le nombre d'heures et leur consommation : pour repérer un batch qui ne se termine jamais.
Le besoin
Un batch de nuit qui tourne encore à midi, c'est souvent une boucle ou une attente de verrou. Les serveurs (HTTP, hôtes) tournent en permanence, eux, et c'est normal : il faut savoir les distinguer.
La requête
SELECT JOB_NAME, SUBSYSTEM, JOB_TYPE, JOB_ACTIVE_TIME,
TIMESTAMPDIFF(8, CHAR(CURRENT TIMESTAMP - JOB_ACTIVE_TIME)) AS HEURES_ACTIF,
CPU_TIME, JOB_STATUS
FROM TABLE(QSYS2.ACTIVE_JOB_INFO()) J
WHERE JOB_TYPE NOT IN ('SYS', 'SBS', 'RDR', 'WTR')
AND JOB_ACTIVE_TIME < CURRENT TIMESTAMP - 24 HOURS
ORDER BY JOB_ACTIVE_TIME
FETCH FIRST 10 ROWS ONLY
JOB_ACTIVE_TIME est l'horodatage de démarrage du travail. On calcule l'écart avec TIMESTAMPDIFF(8, …) (8 = en heures). Les travaux système, de sous-système, les lecteurs et les éditeurs sont exclus par JOB_TYPE.
Le résultat sur un IBM i 7.5
La requête n'a renvoyé aucune ligne.
Aucune ligne au moment de notre test : notre IBM i avait redémarré depuis moins de 24 heures.
Données anonymisées : les noms de système, de profils, de bibliothèques, de postes et les adresses IP ont été remplacés.
L'adapter à votre système
Pour ne garder que les batchs soumis, filtrez JOB_TYPE = 'BCH'. Ajoutez AND SUBSYSTEM = 'QBATCH' pour viser vos chaînes.