Last Updated on 16 Maggio 2020 by Roberto De Pedrini
Questa è la terza parte della raccolta di FAQ & Howto sulla gestione del sistema IBM i : puoi vedere le altre raccolte qui da questi due link :
Gestione del sistema IBM i: FAQ & Howto (Parte 1)
Gestione del sistema IBM i: FAQ & Howto (Parte 2)
Gestione del sistema IBM i: FAQ & Howto (Parte 3)
iAdmin-FAQ-032 Tenere sotto controllo i Trigger
C’è un ottimo post su RPGPGM.COM di Simon Hutchinson che mostra come tenere sotto controllo i triggers in una libreria dati:
RPGPGM.COM : Finding triggers using SYSTRIGGER
iAdmin-FAQ-033 Terminare JOB in Dump … che non si chiudono con ENDJOB
Ogni tanto può succedere che non si riesca a terminare correttamente un JOB in fase di DUMP con il comando ENDJOB (Opzione 4 di WRKACTJOB).
In casi estremi si può ricorrere ad un apposito comando: ENDJOBABN End Job Abnormal ma bisogna valutare tutti i rischi di questo comando: il Job viene forzatamente terminato ma il sistema viene flaggato come “Abnormal End System” e alcune funzionalità potrebbero essere disabilitate fino al prossimo IPL …
Prima di utilizzarlo verificare bene
iAdmin-FAQ-034 Controllare velocemente gli utenti *DISABLED (e il loro ultimo login-valido)
SELECT USER_NAME,USRCLS,STATUS,
DATE(PRVSIGNON) LastSignon
FROM QSYS2.USER_INFO
WHERE STATUS = '*DISABLED'
order by DATE(PRVSIGNON) desc;
Maggiori info : https://www.rpgpgm.com/2015/11/getting-information-about-user-profiles.html
iAdmin-FAQ-035 Lista di tutti gli utenti del gruppo QPGMR
SELECT CAST(GROUPNAME AS CHAR(10)) AS GROUP,
CAST(USERNAME AS CHAR(10)) AS USER
FROM QSYS2.GROUP_PROFILE_ENTRIES
WHERE GROUPNAME = 'QPGMR';
Maggiori info: https://www.rpgpgm.com/2015/11/getting-information-about-user-profiles.html
iAdmin-FAQ-036 Lista di tutti gli utenti con autorizzazione *ALLOBJ
SELECT USER_NAME,
USRCLS,
SPCAUT
FROM QSYS2.USER_INFO
WHERE STATUS = '*ENABLED'
AND SPCAUT LIKE '%*ALLOBJ%'
OR USER_NAME IN (SELECT USERNAME
FROM QSYS2.GROUP_PROFILE_ENTRIES
WHERE GRPPRF IN (SELECT USER_NAME
FROM QSYS2.USER_INFO
WHERE SPCAUT LIKE '%*ALLOBJ%'));
Maggiori info: https://www.rpgpgm.com/2015/11/getting-information-about-user-profiles.html
iAdmin-FAQ-037 Alternative a WRKOBJ per cercare oggetti nel sistema? QSYS2.OBJECT_STATISTICS
Invece di WRKOBJ la vista QSYS2.OBJECT_STATISTICS permette molta più flessibilità e programmabilità. Vediamo qualche esempio:
Lista dei Journal e dei Journal-receiver in una specifica libreria:
SELECT * FROM TABLE (QSYS2.OBJECT_STATISTICS('MYLIB ','*JRN *JRNRCV') ) AS X
Lista di oggetti programma e service program in una libreria (lista semplice senza tutti dettagli)
SELECT * FROM TABLE (QSYS2.OBJECT_STATISTICS('MYLIB','PGM SRVPGM','*ALLSIMPLE')) X
Lista di tutti gli oggetti di una libreria con data di creazione > 1 anno e non utilizzati da 1 anno
SELECT OBJNAME,OBJTYPE,
CAST(OBJCREATED AS DATE) AS CREATED_DATE,
CAST(LAST_USED_TIMESTAMP AS DATE) AS LAST_USED,
DAYS_USED_COUNT
FROM TABLE(QSYS2.OBJECT_STATISTICS('MYLIB','ALL')) A
WHERE LAST_USED_TIMESTAMP < current date - 1 year
OR (OBJCREATED < current date - 1 year AND DAYS_USED_COUNT = 0);
Maggiori informazioni su:
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/rzajq/rzajqudfobjectstat.htm
https://www.rpgpgm.com/2016/01/using-sql-for-objects-statistics.html
iAdmin-FAQ-038 IBM i on Power Performance FAQ
Nel blog di FAQ400, in un post di FAQ non poteva mancare un riferimento alla Bibbia delle performance IBM i, appena aggiornato agli inizi di Maggio 2020:
IBM i on Power – Performance FAQ – May 1, 2020
iAdmin-FAQ-039 Utenti *ALLOBJ e accesso non SSL
Sappiamo che lasciare gli utenti normali con le autorizzazioni *ALLOBJ può essere pericoloso da un punto di vista sicurezza…. se poi accedono direttamente senza la sicurezza SSL ancora peggio: in questo Github GIST di Scott Forstie troviamo proprio una semplice istruzione SQL per elencare tutte queste condizioni:
ALLOBJ users coming in over non SSL network interfaces .sql
iAdmin-FAQ-040 Analizzare le istruzione SQL DML per Insert/Update/Delete leggendo la Plan Cache
E’ possibile analizzare le istruzioni SQL che fanno Update/Delete e Insert di record nelle nostre tabelle per verificare tempi, numeri di volte e procedure che le eseguono. Si possono individuare istruzioni lente e ripetute per intervenire sugli indici o sulla scrittura dell’istruzione stessa.
C’è un ottimo Github Gist di Scott Forstie che presenta un intero script SQL per estrazione, creazione di una tabella riepilogativa, analisi dei dati raccoli:
--- Roberto De Pedrini Faq400.com