Aller au contenu

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.