Service SQL IBM i (AS/400) · Fonction table
QSYS2.IFS_OBJECT_STATISTICS
Statistiques des objets de l'IFS
Parcourt un répertoire de l'IFS et renvoie pour chaque objet sa taille, ses dates, son propriétaire, son CCSID et ses attributs : un DSPLNK en SQL.
À quoi ça sert
La fonction de table part d'un chemin (START_PATH_NAME) et renvoie une ligne par objet : type, lien symbolique, numéro d'ASP, description, horodatages de création, d'accès, de modification des données et de l'objet, dernière utilisation et nombre de jours d'utilisation, taille allouée et taille des données, CCSID, page de codes, nombre de liens physiques, attributs (lecture seule, masqué, temporaire), propriétaire, identifiants numériques d'utilisateur et de groupe, groupe principal et liste d'autorisation.
Quatre paramètres encadrent le parcours : SUBTREE_DIRECTORIES (défaut YES) pour descendre ou non dans les sous-répertoires, OBJECT_TYPE_LIST pour limiter les types, OMIT_LIST pour exclure des éléments et IGNORE_ERRORS (défaut YES). L'exemple d'IBM liste d'abord /usr seul, puis son arbre complet.
Avec SQL, on trie par taille pour trouver les plus gros fichiers, on filtre par date pour ménager un nettoyage, ou on contrôle les propriétaires, ce que WRKLNK ne fait pas en une seule requête.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT PATH_NAME, OBJECT_TYPE, DATA_SIZE, OBJECT_OWNER
FROM TABLE (QSYS2.IFS_OBJECT_STATISTICS(START_PATH_NAME => '/usr',
SUBTREE_DIRECTORIES => 'NO'))
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| PATH_NAME Chemin | OBJECT_TYPE Type de l'objet | DATA_SIZE Taille des données | OBJECT_OWNER Propriétaire de l'objet |
|---|---|---|---|
| /usr | *DIR | 8192 | QSYS |
| /usr/bin | *DIR | 90112 | QSYS |
| /usr/icu4c | *SYMLNK | 38 | QSYS |
| /usr/include | *SYMLNK | 42 | QSYS |
| /usr/ccs | *SYMLNK | 34 | QSYS |
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
Lister les informations de base de tous les objets du répertoire /usr, avec ou sans ses sous-répertoires.
-- Description: List basic information for all the objects in directory /usr.
SELECT PATH_NAME, OBJECT_TYPE, DATA_SIZE, OBJECT_OWNER
FROM TABLE (QSYS2.IFS_OBJECT_STATISTICS(START_PATH_NAME => '/usr',
SUBTREE_DIRECTORIES => 'NO'));
-- Description: List basic information for all the objects in /usr, processing all
-- subdirectories as well.
SELECT PATH_NAME, OBJECT_TYPE, DATA_SIZE, OBJECT_OWNER
FROM TABLE (QSYS2.IFS_OBJECT_STATISTICS(START_PATH_NAME => '/usr',
SUBTREE_DIRECTORIES => 'YES'));
Bon à savoir
Le parcours est récursif par défaut (SUBTREE_DIRECTORIES => 'YES'). Sur la racine ou un gros répertoire, la requête peut durer très longtemps : cible un sous-répertoire et sélectionne seulement les colonnes utiles.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
START_PATH_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | obligatoire | Chemin de départ |
SUBTREE_DIRECTORIES |
VARCHAR(3) | 'YES' | Parcours des sous-répertoires |
OBJECT_TYPE_LIST |
VARCHAR(1408) | '' | Liste des types d'objets |
OMIT_LIST |
DOUBLE-BYTE CHAR LARGE OBJECT | '' | Liste des éléments à omettre |
IGNORE_ERRORS |
VARCHAR(3) | 'YES' | Ignorer les erreurs |
Colonnes renvoyées (90)
Afficher les 90 colonnes
| Colonne | Type | Signification |
|---|---|---|
PATH_NAME |
DOUBLE-BYTE CHAR LARGE OBJECT | Chemin |
OBJECT_TYPE |
VARCHAR(10) | Type de l'objet |
SYMBOLIC_LINK |
DOUBLE-BYTE CHAR LARGE OBJECT | Lien symbolique |
ASP_NUMBER |
INTEGER | Numéro de l'ASP |
TEXT_DESCRIPTION |
GRAPHIC VARYING | Texte descriptif |
FILE_IDENTIFIER_NUMBER |
BIGINT | Numéro d'identifiant du fichier |
GENERATION_IDENTIFIER |
BIGINT | Identifiant de génération |
FILE_SYSTEM_IDENTIFIER |
BIGINT | Identifiant du système de fichiers |
FILE_IDENTIFIER |
BINARY(16) | Identifiant du fichier |
FILE_ACCESS |
BINARY(4) | Accès au fichier |
CREATE_TIMESTAMP |
TIMESTAMP | Horodatage de création |
ACCESS_TIMESTAMP |
TIMESTAMP | Horodatage du dernier accès |
DATA_CHANGE_TIMESTAMP |
TIMESTAMP | Horodatage de la dernière modification des données |
OBJECT_CHANGE_TIMESTAMP |
TIMESTAMP | Horodatage de dernière modification de l'objet |
LAST_USED_TIMESTAMP |
TIMESTAMP | Horodatage de dernière utilisation |
DAYS_USED_COUNT |
INTEGER | Nombre de jours d'utilisation |
LAST_RESET_TIMESTAMP |
TIMESTAMP | Horodatage de la dernière réinitialisation |
ALLOCATED_SIZE |
BIGINT | Taille allouée |
DATA_SIZE |
BIGINT | Taille des données |
CCSID |
INTEGER | CCSID |
CODE_PAGE |
INTEGER | Page de codes |
EXTENDED_ATTRIBUTE_COUNT |
BIGINT | Nombre d'attributs étendus |
CRITICAL_EXTENDED_ATTRIBUTE_COUNT |
BIGINT | Nombre d'attributs étendus critiques |
EXTENDED_ATTRIBUTE_SIZE |
BIGINT | Taille des attributs étendus |
HARD_LINK_COUNT |
INTEGER | Nombre de liens physiques |
OBJECT_READ_ONLY |
VARCHAR(3) | Objet en lecture seule |
OBJECT_HIDDEN |
VARCHAR(3) | Objet masqué |
TEMPORARY_OBJECT |
VARCHAR(3) | Objet temporaire |
SYSTEM_FILE |
VARCHAR(3) | Fichier système |
SYSTEM_USAGE |
VARCHAR(6) | Utilisation système |
DEVICE_SPECIAL_FILE |
BIGINT | Fichier spécial d'unité |
OBJECT_OWNER |
VARCHAR(10) | Propriétaire de l'objet |
USER_ID_NUMBER |
BIGINT | Numéro d'identifiant de l'utilisateur (UID) |
PRIMARY_GROUP |
VARCHAR(10) | Groupe principal |
GROUP_ID_NUMBER |
BIGINT | Numéro d'identifiant du groupe |
AUTHORIZATION_LIST |
VARCHAR(10) | Liste d'autorisation |
SET_EFFECTIVE_USER_ID |
VARCHAR(3) | Positionnement de l'identifiant d'utilisateur effectif |
SET_EFFECTIVE_GROUP_ID |
VARCHAR(3) | Positionnement de l'identifiant de groupe effectif |
AUTHORITY_COLLECTION_VALUE |
VARCHAR(10) | Valeur de collecte des droits |
OBJECT_AUDIT |
VARCHAR(7) | Audit de l'objet |
OBJECT_AUDIT_CREATE |
VARCHAR(7) | Audit à la création des objets |
JOURNALED |
VARCHAR(3) | Indicateur de journalisation |
JOURNAL_LIBRARY |
VARCHAR(10) | Bibliothèque du journal |
JOURNAL_NAME |
VARCHAR(10) | Nom du journal |
JOURNAL_BEFORE_IMAGE |
VARCHAR(3) | Journalisation des images avant |
JOURNAL_AFTER_IMAGE |
VARCHAR(3) | Journalisation des images après |
JOURNAL_IDENTIFIER |
VARCHAR(10) | Identifiant de journal |
JOURNAL_START_TIMESTAMP |
TIMESTAMP | Horodatage de début de journalisation |
JOURNAL_OPTIONAL_ENTRIES |
VARCHAR(3) | Écritures facultatives du journal |
JOURNAL_SUBTREE |
VARCHAR(3) | Journalisation de l'arborescence |
PARTIAL_TRANSACTION |
CHAR(1) | Transaction partielle |
APPLY_STARTING_RECEIVER_LIBRARY |
VARCHAR(10) | Bibliothèque du récepteur de journal de départ de l'application |
APPLY_STARTING_RECEIVER |
VARCHAR(10) | Récepteur de journal de départ de l'application |
APPLY_STARTING_RECEIVER_ASP |
VARCHAR(10) | ASP du récepteur de journal de départ de l'application |
OBJECT_SIGNED |
VARCHAR(3) | Objet signé |
SYSTEM_TRUSTED_SOURCE |
VARCHAR(3) | Source de confiance du système |
MULTIPLE_SIGNATURES |
VARCHAR(3) | Signatures multiples |
OBJECT_DOMAIN |
VARCHAR(7) | Domaine de l'objet |
BLOCK_SIZE |
INTEGER | Taille de bloc |
AUX_STORAGE_ALLOCATION |
VARCHAR(8) | Allocation de mémoire auxiliaire |
AUX_STORAGE_OVERFLOW |
VARCHAR(3) | Débordement de mémoire auxiliaire |
MAIN_STORAGE_ALLOCATION |
VARCHAR(8) | Allocation de mémoire principale |
STORAGE_FREED |
VARCHAR(3) | Stockage libéré |
STORED_LOCAL |
VARCHAR(3) | Stocké en local |
VIRTUAL_DISK_STORAGE |
VARCHAR(3) | Stockage de disque virtuel |
DIRECTORY_FORMAT |
CHAR(6) | Format du répertoire |
STREAM_FILE_FORMAT |
CHAR(6) | Format du fichier flux |
UDFS_FILE_FORMAT |
CHAR(6) | Format de fichier de l'UDFS |
UDFS_PREFERRED_STORAGE |
CHAR(3) | Stockage préféré de l'UDFS |
UDFS_TEMPORARY_OBJECT |
VARCHAR(3) | Objet temporaire de l'UDFS |
CASE_SENSITIVE_FILE_SYSTEM |
VARCHAR(3) | Système de fichiers sensible à la casse |
RESTRICT_RENAME_AND_UNLINK |
VARCHAR(3) | Restriction du renommage et de la suppression de lien |
PC_ARCHIVE |
VARCHAR(3) | Attribut d'archivage PC |
SYSTEM_ARCHIVE |
VARCHAR(3) | Attribut d'archive système |
ALLOW_SAVE |
VARCHAR(3) | Sauvegarde autorisée |
SYSTEM_RESTRICT_SAVE |
VARCHAR(3) | Sauvegarde restreinte par le système |
INHERIT_ALLOW_CHECKPOINT_WRITER |
VARCHAR(3) | Héritage de l'autorisation d'écriture du point de contrôle |
ALLOW_WRITE_DURING_SAVE |
VARCHAR(3) | Écriture autorisée pendant la sauvegarde |
EXIT_PROGRAM_OPEN_CLOSE |
VARCHAR(3) | Programme de sortie à l'ouverture et à la fermeture |
EXIT_PROGRAM_OPEN_CLOSE_DIRECTORY |
VARCHAR(3) | Programme de sortie à l'ouverture et à la fermeture (répertoire) |
EXIT_PROGRAM_SCAN |
VARCHAR(11) | Programme de sortie d'analyse |
EXIT_PROGRAM_SCAN_DIRECTORY |
VARCHAR(11) | Programme de sortie d'analyse (répertoire) |
SCAN_STATUS |
VARCHAR(12) | Statut d'analyse |
CCSID_SCAN |
INTEGER | Analyse du CCSID |
CCSID_SCAN_SUCCESS |
INTEGER | Succès de l'analyse du CCSID |
SCAN_SIGNATURES_DIFFERENT |
VARCHAR(3) | Signatures d'analyse différentes |
BINARY_SCAN |
VARCHAR(3) | Analyse binaire |
CHECKED_OUT |
VARCHAR(3) | Objet extrait |
CHECKED_OUT_TIMESTAMP |
TIMESTAMP | Horodatage de l'extraction |
CHECKED_OUT_USER |
VARCHAR(10) | Utilisateur ayant extrait l'objet |