Service SQL IBM i (AS/400) · Fonction table
QSYS2.GET_JOB_INFO
Détails d'un travail, y compris son SQL
Renvoie pour un travail donné son statut, sa consommation et l'instruction SQL en cours : l'équivalent SQL d'un WRKJOB ciblé.
À quoi ça sert
La fonction prend un nom de travail qualifié (V_JOB_NAME) et renvoie une ligne : statut du travail, type, priorité d'exécution, profil, sous-système, temps processeur, stockage temporaire en Mo, E/S auxiliaires, défauts de page, ainsi que les informations d'identification du client (poste, application, adresse IP). Elle donne aussi le texte de l'instruction SQL en cours (V_SQL_STATEMENT_TEXT), son statut et son horodatage de début, et pour les travaux prédémarrés le nombre de réutilisations.
Le paramètre V_IGNORE_ERRORS (défaut NO) contrôle le comportement quand le travail est introuvable ou inaccessible. Dans l'exemple d'IBM, la fonction est appelée en jointure latérale pour chaque travail de ACTIVE_JOB_INFO, ce qui permet de repérer les travaux dont une instruction SQL tourne en ce moment, triés par durée.
Le SQL apporte ici la jointure : on enchaîne ACTIVE_JOB_INFO pour la sélection, puis GET_JOB_INFO pour le détail du SQL, sans écran de visualisation de travail à ouvrir un par un.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
WITH ACTIVE_USER_JOBS (Q_JOB_NAME, CPU_TIME, RUN_PRIORITY) AS (
SELECT
JOB_NAME, CPU_TIME, RUN_PRIORITY
FROM TABLE (ACTIVE_JOB_INFO()) x
WHERE JOB_TYPE <> 'SYS'
) SELECT Q_JOB_NAME, CPU_TIME, RUN_PRIORITY, V_SQL_STATEMENT_TEXT,
ABS( CURRENT TIMESTAMP - V_SQL_STMT_START_TIMESTAMP ) AS SQL_STMT_DURATION, B.*
FROM ACTIVE_USER_JOBS, TABLE(QSYS2.GET_JOB_INFO(Q_JOB_NAME)) B
WHERE V_SQL_STMT_STATUS = 'ACTIVE'
ORDER BY SQL_STMT_DURATION DESC
Ce que l'IBM i a renvoyé le 01/10/2026 (3 lignes au plus) :
| Q_JOB_NAME | CPU_TIME | RUN_PRIORITY | V_SQL_STATEMENT_TEXT Texte de l'instruction SQL | SQL_STMT_DURATION | V_JOB_STATUS Statut du travail | V_ACTIVE_JOB_STATUS Statut du travail actif | V_ACTIVE_JOB_TYPE Type du travail actif | V_RUN_PRIORITY Priorité d'exécution | V_AUTHORIZATION_NAME Profil utilisateur | V_SBS_NAME Nom du sous-système | V_CPU_USED Temps CPU utilisé | V_TEMP_STORAGE_USED_MB Stockage temporaire utilisé (Mo) | V_AUX_IO_REQUESTED Nombre d'E/S auxiliaires demandées | V_PAGE_FAULTS Nombre de défauts de page | V_CLIENT_WRKSTNNAME Nom du poste de travail client | V_CLIENT_APPLNAME Nom de l'application cliente | V_CLIENT_ACCTNG Information de comptabilité du client | V_CLIENT_PROGRAMID Identifiant du programme client | V_CLIENT_USERID Identifiant de l'utilisateur client | V_SQL_STMT_STATUS Statut de l'instruction SQL | V_SQL_STMT_START_TIMESTAMP Horodatage de début de l'instruction SQL | V_QUERY_OPTIONS_LIB_NAME Bibliothèque du fichier d'options de requête | V_CLIENT_IP_ADDRESS Adresse IP du client | V_PJ_REUSE_COUNT Nombre de réutilisations du travail prédémarré | V_PJ_MAXUSE_COUNT Nombre maximal d'utilisations du travail prédémarré |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 969441/QUSER/QZDASOINIT | 5746 | 20 | SELECT AUTHORIZATION_NAME P, USER_CLASS_NAME C, SPECIAL_AUTHORITIES A, CURRENT_LIBRARY_NAME L, JOB_DESCRIPTION_NAME J, JOB_DESCRIPTION_LIBRARY_NAME JL, OUTPUT_QUEUE_NAME OQ, LIMIT_CAPABILITIES LC, STATUS ST FROM QSYS2.USER_INFO WHERE CREATION_TIMESTAMP >= ? AND (CURRENT_LIBRARY_NAME=… | 14.434229 | *ACTIVE | RUN | PJ | 20 | UTIL232 | QUSRWRK | 5818 | 37 | 209 | 93 | POSTE01 | POSTE02 | POSTE03 | POSTE04 | UTIL232 | ACTIVE | 2026-10-01 08:56:56.791045 | NULL | 127.0.0.1 | 2 | 200 |
| 969424/QUSER/QZDASOINIT | 1609 | 20 | SELECT AUTHORIZATION_NAME, STATUS, NO_PASSWORD_INDICATOR, PREVIOUS_SIGNON, TEXT_DESCRIPTION FROM QSYS2.USER_INFO WHERE SPECIAL_AUTHORITIES LIKE ? OR AUTHORIZATION_NAME IN ( SELECT USER_PROFILE_NAME FROM QSYS2.GROUP_PROFILE_ENTRIES WHERE GROUP_PROFILE_NAME IN ( SELECT AUTHORIZATION_NA… | 0.057846 | *ACTIVE | RUN | PJ | 20 | UTIL232 | QUSRWRK | 1665 | 134 | 48819 | 46964 | POSTE01 | POSTE02 | POSTE03 | POSTE04 | UTIL232 | ACTIVE | 2026-10-01 08:57:11.283120 | NULL | 127.0.0.1 | 2 | 200 |
| 968572/QUSER/QZDASOINIT | 375496 | 20 | Description de l'objet | 4.5E-5 | *ACTIVE | RUN | PJ | 20 | UTIL232 | QUSRWRK | 375515 | 253 | 36523 | 12896 | POSTE01 | POSTE02 | POSTE03 | POSTE04 | UTIL232 | ACTIVE | 2026-10-01 08:57:11.225229 | NULL | 127.0.0.1 | 54 | 200 |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Trouver les travaux dont une instruction SQL est en cours d'exécution.
-- Description: Find the jobs with SQL statements executing
WITH ACTIVE_USER_JOBS (Q_JOB_NAME, CPU_TIME, RUN_PRIORITY) AS (
SELECT
JOB_NAME, CPU_TIME, RUN_PRIORITY
FROM TABLE (ACTIVE_JOB_INFO()) x
WHERE JOB_TYPE <> 'SYS'
) SELECT Q_JOB_NAME, CPU_TIME, RUN_PRIORITY, V_SQL_STATEMENT_TEXT,
ABS( CURRENT TIMESTAMP - V_SQL_STMT_START_TIMESTAMP ) AS SQL_STMT_DURATION, B.*
FROM ACTIVE_USER_JOBS, TABLE(QSYS2.GET_JOB_INFO(Q_JOB_NAME)) B
WHERE V_SQL_STMT_STATUS = 'ACTIVE'
ORDER BY SQL_STMT_DURATION DESC;
Bon à savoir
L'appel est fait travail par travail : appliquer la fonction à tous les travaux actifs d'un gros système coûte cher. Filtre d'abord avec ACTIVE_JOB_INFO, comme le fait l'exemple (JOB_TYPE <> 'SYS').
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
V_JOB_NAME |
VARCHAR(28) | obligatoire | Nom qualifié du travail |
V_IGNORE_ERRORS |
VARCHAR(3) | 'NO' | Ignorer les erreurs |
Colonnes renvoyées (22)
Afficher les 22 colonnes
| Colonne | Type | Signification |
|---|---|---|
V_JOB_STATUS |
CHAR(10) | Statut du travail |
V_ACTIVE_JOB_STATUS |
CHAR(4) | Statut du travail actif |
V_ACTIVE_JOB_TYPE |
VARCHAR(3) | Type du travail actif |
V_RUN_PRIORITY |
INTEGER | Priorité d'exécution |
V_AUTHORIZATION_NAME |
VARCHAR(10) | Profil utilisateur |
V_SBS_NAME |
CHAR(10) | Nom du sous-système |
V_CPU_USED |
BIGINT | Temps CPU utilisé |
V_TEMP_STORAGE_USED_MB |
INTEGER | Stockage temporaire utilisé (Mo) |
V_AUX_IO_REQUESTED |
BIGINT | Nombre d'E/S auxiliaires demandées |
V_PAGE_FAULTS |
BIGINT | Nombre de défauts de page |
V_CLIENT_WRKSTNNAME |
CHAR(255) | Nom du poste de travail client |
V_CLIENT_APPLNAME |
CHAR(255) | Nom de l'application cliente |
V_CLIENT_ACCTNG |
CHAR(255) | Information de comptabilité du client |
V_CLIENT_PROGRAMID |
CHAR(255) | Identifiant du programme client |
V_CLIENT_USERID |
CHAR(255) | Identifiant de l'utilisateur client |
V_SQL_STATEMENT_TEXT |
VARCHAR(10000) | Texte de l'instruction SQL |
V_SQL_STMT_STATUS |
CHAR(8) | Statut de l'instruction SQL |
V_SQL_STMT_START_TIMESTAMP |
TIMESTAMP | Horodatage de début de l'instruction SQL |
V_QUERY_OPTIONS_LIB_NAME |
CHAR(10) | Bibliothèque du fichier d'options de requête |
V_CLIENT_IP_ADDRESS |
VARCHAR(45) | Adresse IP du client |
V_PJ_REUSE_COUNT |
INTEGER | Nombre de réutilisations du travail prédémarré |
V_PJ_MAXUSE_COUNT |
INTEGER | Nombre maximal d'utilisations du travail prédémarré |