Service SQL IBM i (AS/400) · Vue
QSYS2.RECORD_LOCK_INFO
Verrous d'enregistrements
Liste les verrous d'enregistrements posés sur les membres de fichiers de la base de données : numéro d'enregistrement, état du verrou et travail qui le détient.
À quoi ça sert
Cette vue répond à la question classique : qui verrouille quel enregistrement ? Pour chaque verrou, elle donne la table et son membre, le numéro d'enregistrement relatif (RELATIVE_RECORD_NUMBER), l'état, le statut et la portée du verrou, ainsi que le travail concerné (JOB_NAME, JOB_USER, JOB_NUMBER) et son unité d'exécution.
Elle accepte les paramètres LIBRARY_NAME, FILE_NAME, MEMBER_NAME et IASP_NUMBER, qui limitent la recherche à un fichier plutôt que d'énumérer tout le système. Elle remplace l'enchaînement de la commande WRKOBJLCK puis de l'option sur les enregistrements.
Le gain du SQL est la jointure : on peut rapprocher le travail verrouillant de QSYS2.GET_JOB_INFO pour afficher l'instruction SQL en cours et l'adresse IP du client, comme dans l'exemple d'IBM.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT * FROM QSYS2.RECORD_LOCK_INFO
Pas de résultat : la vue parcourt tout le système et n'a pas répondu dans le délai que nous nous fixons ; aucun verrou d'enregistrement n'était actif.
L'exemple d'IBM
Rechercher les verrous d'enregistrements posés sur la table TOYSTORE/SALES.
-- Description: Find any record locks over the TOYSTORE/SALES table
WITH LOCK_CONFLICT_TABLE (
table_name, lock_state, rrn, q_job_name) AS (
SELECT table_name, lock_state, rrn, job_name
FROM QSYS2.RECORD_LOCK_INFO where
table_schema = 'TOYSTORE' and
table_name = 'SALES'
) SELECT table_name, lock_state, rrn,
q_job_name, V_SQL_STATEMENT_TEXT,
V_CLIENT_IP_ADDRESS, B.*
FROM LOCK_CONFLICT_TABLE, TABLE(QSYS2.GET_JOB_INFO(q_job_name)) B;
Bon à savoir
Filtrez toujours sur la bibliothèque et le nom du fichier : sans filtre, la vue parcourt tous les verrous du système, ce qui peut être long.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
LIBRARY_NAME |
VARCHAR(10) | obligatoire | Nom de la bibliothèque |
FILE_NAME |
VARCHAR(10) | obligatoire | Nom du fichier |
MEMBER_NAME |
VARCHAR(10) | obligatoire | Nom du membre |
IASP_NUMBER |
INTEGER | obligatoire | Numéro de l'ASP indépendant |
Colonnes renvoyées (16)
Afficher les 16 colonnes
| Colonne | Type | Signification |
|---|---|---|
TABLE_SCHEMA |
VARCHAR(128) | Bibliothèque de la table |
TABLE_NAME |
VARCHAR(128) | Nom de la table |
TABLE_PARTITION |
VARCHAR(128) | Partition de la table |
SYSTEM_TABLE_SCHEMA |
VARCHAR(10) | Bibliothèque système de la table |
SYSTEM_TABLE_NAME |
VARCHAR(10) | Nom système de la table |
SYSTEM_TABLE_MEMBER |
VARCHAR(10) | Membre de la table (nom système) |
RELATIVE_RECORD_NUMBER |
BIGINT | Numéro d'enregistrement relatif |
LOCK_STATE |
VARCHAR(8) | État du verrou |
LOCK_STATUS |
VARCHAR(9) | Statut du verrou |
LOCK_SCOPE |
VARCHAR(10) | Portée du verrou |
JOB_NAME |
VARCHAR(28) | Nom du travail |
JOB_NAME_SHORT |
VARCHAR(10) | Nom court du travail |
JOB_USER |
VARCHAR(10) | Profil utilisateur du travail |
JOB_NUMBER |
VARCHAR(6) | Numéro du travail |
THREAD_ID |
BIGINT | Identifiant de l'unité d'exécution |
LOCK_SPACE_ID |
BINARY(20) | Identifiant de l'espace de verrouillage |