- Lister les dates et utilisateurs de création
SELECT OBJLIB as bibliotheque ,
OBJNAME as objet , OBJTYPE as type , OBJDEFINER as createur
, OBJCREATED as date_creation ,
OBJTEXT as descriptionFROM TABLE(QSYS2.OBJECT_STATISTICS(‘AXFILE’,’*ALL’))
ORDER
BY OBJtype, objname - Comparer 2 bibliothèques pour chercher les fichiers mis à niveau
Cette requête SQL permet de mettre en évidence les différences de niveaux entre 2 bibliothèques :
SELECT
a.SYSTEM_TABLE_NAME as fichier,
a.SYSTEM_TABLE_SCHEMA as bib1, a.FORMAT_LEVEL_ID as niv1,
b.SYSTEM_TABLE_SCHEMA as bib2, b.FORMAT_LEVEL_ID as niv2,
(a.FORMAT_LEVEL_ID b.FORMAT_LEVEL_ID) as upgraded
FROM sysfiles a , sysfiles b
WHERE
a.system_table_schema = 'MABIB1' and
b.system_table_schema = 'MABIB2' and
a.native_type = 'PHYSICAL' and
a.SYSTEM_TABLE_NAME = b.SYSTEM_TABLE_NAME
Pour n’afficher que les fichiers qui ont changé de niveau :
SELECT
a.SYSTEM_TABLE_NAME as fichier,
a.SYSTEM_TABLE_SCHEMA as bib1, a.FORMAT_LEVEL_ID as niv1,
b.SYSTEM_TABLE_SCHEMA as bib2, b.FORMAT_LEVEL_ID as niv2
FROM sysfiles a , sysfiles b
WHERE
a.system_table_schema = 'MABIB1' and
b.system_table_schema = 'MABIB2' and
a.native_type = 'PHYSICAL' and
a.SYSTEM_TABLE_NAME = b.SYSTEM_TABLE_NAME and
a.FORMAT_LEVEL_ID b.FORMAT_LEVEL_ID
- Lister les fonctions SQL
SELECT * FROM QSYS2.SYSFUNCS
Pour tester la présence d’une fonction (par exemple QCMDEXC) :
SELECT *
FROM QSYS2.SYSFUNCS
WHERE ROUTINE_NAME = ‘QCMDEXC’ - Afficher la version de l’OS400
DSPDTAARA QUSRSYS/QSS1MRI
- Recherche de source sur la machine
Votre source a été supprimé?
Comment vérifier si il existe une copie de sauvegarde quelque part sur la machine?SELECT * FROM syspartitionstat WHERE system_table_member = 'MONSOURCE' - Taille d’une bibliothèque
SELECT SUM(objsize) FROM TABLE(QSYS2.OBJECT_STATISTICS('MABIB', '*ALL'))Additionner 2 bibliothèques :
VALUES (SELECT SUM(objsize) FROM TABLE(QSYS2.OBJECT_STATISTICS('MABIB', '*ALL'))) +
(SELECT SUM(objsize) FROM TABLE(QSYS2.OBJECT_STATISTICS('MABIB2', '*ALL'))) - Lister les bibliothèques, les tables et les colonnes avec SQL
Lister les bibliothèques :
SELECT * FROM sysschemas
Par exemple, les 10 plus grosses bibliothèques :SELECT * FROM sysschemas
ORDER BY schema_size DESC
LIMIT 10Lister les tables :
SELECT * FROM systablesPar exemple, lister les tables d’une bibliothèque :
SELECT * FROM systablesWHERE table_schema ='maBib'
Lister les colonnes :SELECT * FROM syscolumns
Lister les colonnes d’une table :SELECT * FROM syscolumns
WHERE table_name='maTable' AND table_schema='maBib' - Copier un spoule dans l’IFS
CRTPF FILE(QTEMP/SPOULE) RCDLEN(132)CPYSPLF FILE(NOM_SPOULE) TOFILE(QTEMP/SPOULE)CPYTOSTMF FROMMBR('/QSYS.LIB/QTEMP.LIB/SPOULE.FILE/SPOULE.MBR') TOSTMF('/home/mon_user/spoule.txt') STMFCCSID(*PCASCII)
- Superviser mon AS400 avec Metabase
Metabase est un outil de visualisation des données sous forme d’un dashboard graphique.
Exemple d’utilisation :
Requêtes utilisées pour cette exemple :
1) % occupation disqueSELECT SYSTEM_ASP_USED FROM qsys2.system_status_info2) Nombre de travaux intéractifs
SELECT count(*) FROM TABLE(active_job_info()) where job_type=’INT’3) Nombre de travaux en message
SELECT count(*) FROM TABLE(active_job_info()) WHERE job_status='MSGW'4) Palmarès du nombre de spoules par utilisateur
SELECT job_user , count(*) AS nombre FROM TABLE(QSYS2.SPOOLED_FILE_INFO(USER_NAME =>'*'))
WHERE job_user'QTCP'
GROUP BY job_user
ORDER BY nombre DESC
LIMIT 105) Palmarès des plus gros fichiers
SELECT objlib concat '/' concat objname , objsize
FROM TABLE(QSYS2.OBJECT_STATISTICS('*ALLUSR', 'FILE'))
WHERE objowner NOT LIKE 'Q%' AND objattribute='PF'
ORDER BY objsize DESC LIMIT 15 - Importer un SAVF depuis l’IFS
– Création du savf (par exemple dans qtemp) :
CRTSAVF FILE(QTEMP/MONSAVF)
– Importation du savf depuis l’IFS :
CPYFRMSTMF FROMSTMF('/home/monprofil/monsavf') TOMBR('/qsys.lib/qtemp.lib/monsavf.file') MBROPT(*REPLACE) - Agrandir la ligne de commande
Sur une ligne de commande : CALL QCMD

On obtient 4 lignes :

Et pour avoir encore plus grand : F11=Plein écran

- Faire du ménage dans l’IFS selon la date des fichiers
Par exemple, supprimer tous les fichiers pdf de plus d’1 an dans un répertoire :
SELECTQCMDEXC('rmvlnk objlnk(''' CONCATTRIM(CAST(path_name AS VARCHAR(200))) CONCAT ''')')FROM TABLE(qsys2.ifs_object_statistics( '/home/monRepertoire'))WHERE path_name LIKE '%.pdf'AND CREATE_TIMESTAMP < CURRENT_TIMESTAMP - 1 YEARSExplications :
– ifs_object_statistics permet de lister les fichiers d’un répertoire de l’IFS
exemple :SELECT CAST(path_name AS VARCHAR(100))
FROM TABLE(qsys2.ifs_object_statistics('/home/monRepertoire'))
– RMVLNK est la commande IBMi qui permet la suppression d’un fichier de l’IFS
– QCMDEXC permet d’exécuter une commande IBMi en SQL - Trouver le FQDN de la machine
CHGTCPDMN + F4
- Lister les tables d’une bibliothèque avec la dernière date d’utilisation
SELECT SUBSTR(table_name, 1 , 12) , last_used_timestamp FROM systablestat WHERE table_schema = 'MaBibliotheque' - Obtenir le type, le modèle, le n° de série, le nom de la machine et le n° de partition
SELECT machine_type, machine_model, serial_number, host_name, partition_idFROM qsys2.system_status_info - Compter le nombre de spoules par utilisateur
SELECT count(*) FROM TABLE(qsys2.spooled_file_info(USER_NAME => 'ProfilAS400'))Si besoin, la commande qui permet de supprimer tous les spoules d’un d’utilisateur :
DLTSPLF FILE(*SELECT) SELECT(ProfilAS400)Pour avoir le palmarès des utilisateurs avec le plus de spoules :
SELECT job_user , count(*) AS nombre
FROM TABLE(QSYS2.SPOOLED_FILE_INFO(USER_NAME =>'*'))
GROUP BY job_user
ORDER BY nombre DESC