01 - Programmazione04 - System Administration04g - Varie sistemistica

Gestione del sistema IBM i: FAQ & Howto (Parte 3) IT

Last Updated on 30 Aprile 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)

iAdmin-FAQ-021 Ricostruzione Indici e Viste Logiche ( EDTRBDAP )

In seguito ad uno spegnimento errato del sistema, ad esempio un black-out elettrico o un sistema lasciato andare fino al 99% di occupazione del disco, può succedere che riavviando il sistema non vengano correttamente ricostruiti tutti i Logical File / Index in uso in quel momento.

Se sono file logici utilizzati esplicitamente (come nel caso di I/O nativo e il logical file dichiarato nelle specifiche dcl-f (F), il sistema operativo si preoccupa da solo di ricostruire (rebuild) il logical file … ma se sono indici delle tabelle, creati, ad esempio, dai suggerimenti dell’Index-Advisor, non vengono presi in considerazione dai nostri statement SQL con il risultato di arrivare a tempi di risposta osceni.

Lanciando il comando EDTRBDAP possiamo controllare e ricreare tutti gli indici difettosi e far tornare le performance a livello precedente.

https://www.ibm.com/support/pages/using-edtrbdap-command-rebuild-invalid-access-paths

iAdmin-FAQ-022 Modificare un gruppo di utenti in modo veloce (CHGUSRPRF *XX* MYOPTION(YYY))

Se vogliamo modificare un gruppo di utenti settando a tutti un certa opzione non possiamo utilizzare un comando tipo CHGUSRPRF (MYFILTER) MYOPTION … non è possibile.

Possiamo però utilizzare SQL per costruire uno script da eseguire sempre all’interno del “Esegui script SQL” di ACS. Ad esempio, se volessimo settare il parametro LMTDEVSSN(*YES) per limitare l’utilizzo di una sola sessione per gli utenti radiofrequenza (che supponiamo siano RFxxxxx) possiamo creare lo script con SQL, salvarlo in un file TXT e rieseguirne il risultato sempre da interfaccia SQL:

SELECT 
'CL: CHGUSRPRF USRPRF(' || AUTHORIZATION_NAME|| ') LMTDEVSSN(*YES);' 
FROM  QSYS2.USER_INFO  WHERE AUTHORIZATION_NAME LIKE 'RF%' ;

Un secondo modo, sempre da “Esegui script SQL” di ACS oppure anche da STRSQL è possibile scrivere logica SQL in un SQL-Compound-statement (ne parliamo in questo post di “FAQ SQL per DB2 for i“)

begin

    declare cmd varchar(256);

    for vl as c1 cursor for
        select
        *
        FROM  QSYS2.USER_INFO  WHERE AUTHORIZATION_NAME LIKE 'LAB%'
        do

        set cmd = 'CHGUSRPRF USRPRF('|| AUTHORIZATION_NAME|| ') LMTDEVSSN(*YES)'; 
        call qcmdexc(cmd);
    end for;
end;

iAdmin-FAQ-023 Recuperare l’IP della partizione IBM i e del client che esegue una applicazione

Con gli IBM i services possiamo recuperare gli IP della partizione IBM i e anche quella del client che sta eseguendo una applicazione in modo molto semplice:

Recuperare l’indirizzo IP (o gli indirizzi IP) del sistema:

SELECT * FROM QSYS2.NETSTAT_INTERFACE_INFO 
  WHERE INTERFACE_LINE_TYPE = 'VETH';

or

SELECT LOCAL_BINDING_INTERFACE FROM QSYS2.NETSTAT_ROUTE_INFO where ROUTE_TYPE =
'DFTROUTE';

Se non si hanno a disposizione gli IBM i services (vecchie versioni di sistema operativo), ci si può arrivare anche con RPG via API:

List Network Interfaces (QtocLstNetIfc) API

Recuperare l’indirizzo IP del device che sta eseguendo una applicazione

select sysibm.client_ipaddr
from sysibm.sysdummy1;

iAdmin-FAQ-024 Nome del Relational Database (WRKRDBDIRE)

Il nome del database (quello che si vede con STRSQL o SQL Script) viene gestito da WRKRDBDIRE e possono essere aggiunti altri ALIAS per puntare al DB *LOCAL … cosa utile, ad esempio, quando si cambia sistema dobbiamo modificare gli accessi ODBC / JDBC da esterno.

iAdmin-FAQ-025 Attenzione a CHGCMDDFT

Quando si cambiano dei default con CHGCMDDFT, all’aggiornamento del sistema operativo o all’installazione di qualche PTF potremmo avere qualche problema. In questo post su Geeky Ramblings ci viene proposta una alternativa:

Beware CHGCMDDFT

iAdmin-FAQ-026 Performance Data Collector e Performance Data Investigation (PDI)

Quando si vogliono analizzare le performance di un IBM i (o di una singola partizione), il sistema operativo offre una serie di tools che aiutano ad individuare e migliorare diversi problemi di performance:

Sempre legato ai concetti di Performance c’è un ottimo post, anche se ancora del 2013, di Dawn May: IBM i wait accounting che vale la pena di leggere.

iAdmin-FAQ-027 SAVSECDTA ci mette troppo tempo

Il comando SAVSECDTA salva tutte le informazioni di sicurezza senza richiedere di essere in restricted mode (condizione limitata) e può essere aggiunto al processo di backup dei dati. Su alcuni sistemi IBM i questo processo risulta essere molto lungo … in tal caso c’è una guida che ne spiega le cause e anche il modo di velocizzare: IBM Support – SAVSECDTA is Taking a Long Time, trucchi come quello di creare un profilo utente di gruppo e assegnare l’autorizzazione degli oggetti a questo utente-di-gruppo invece che ad ogni singolo … con notevoli risparmi di tempo (da ore a minuti!!!).

iAdmin-FAQ-028 Lista degli oggetti di uno UserProfile

Sembra una cosa banale … ma il comando “DSPUSRPRF USRPRF(MYUSER) TYPE(OBJOWN) OUTPUT(PRINT)” si limita a stampare gli oggetti delle varie librerie IBM i (QSYS.LIB/…) ma ignora eventuali oggetti IFS. Se vogliamo anche quelli c’è un tools non supportato ufficialmente da IBM … ma scaricabile dal loro stesso sito che si chiama QMGTOOLS.

Nella libreria QMGTOOLS e anche nella QSPTLIB, tra le altre cose, troviamo il modo per stampare l’elenco completo degli oggetti dell’utente indicato.

iAdmin-FAQ-028 Analizzare i JOBLOG di un “sottoinsieme” di JOB

Utilizzando i “DB2 for” Services possiamo interrogare e gestire il sistema con pochi e semplici statement SQL. Ad esempio JOBLOG_INFO permette di interrogare con SQL il JOBLOG del job attuale o di uno specifico JOB … ma se volessimo vedere i JOBLOG di tutti i JOB di un certo tipo … ad esempio di tutti i JOB QZDASOINIT:

 select a.job_name, b.message_id, b.message_text
  from table(qsys2.joblog_info(
  JOB_USER_FILTER => 'QUSER')) a,
  lateral (select * from table(qsys2.joblog_info(a.job_name)) x) b
  where a.job_name like('%QZDASOINIT%');

Altri esempi di utilizzo li trovate in questo post su IBM System Media: Analyzing Joblogs with IBM’s Db2 for i Services

iAdmin-FAQ-029 Bad Logon – Individuare i tentativi di accesso con password errata

Se attivo l’Audit Journal ( vedi questo post “Modernize your platform with IBM i 7.4 “) possiamo analizzare i tentativi di Logon con password errata interrogando i dati rilevati dallo stesso Audit Journal con le funzioni di controllo:

DSPAUDJRNE ENTTYP(PW) OUTPUT(*PRINT)
oppure
DSPJRN JRN(QAUDJRN) ENTTYP(PW) OUTPUT(*PRINT)

Come indicato in questo ottimo post ITJungle ancora del 2005: “Admin Alert: A Better Technique for Detecting Invalid Log-In Attempts”

Oppure interrogare lo stesso Audit Journal con le funzionalità SQL “Qsys2.Display_Journal ” con uno statement SQL come indicato in questo Gist di Brian Dietz :”Badlogons.sql

iAdmin-FAQ-030 – Controllare i JOB in MSGW Message Waiting con SQL

Vedi questo Gist di Brian Dietz : Active Job in MSGW che utilizza un join tra i DB2 for i Service Qsys2.Joblog_Info e Qsys2.Active_Job_Info

iAdmin-FAQ-031 – Controllare i JOB in ODBC con i DB2 for i Service

Sempre nel repository Gist di Brian Dietz troviamo questo SQL per listare i JOB ODBC :”WRKOBDCJOB in SQL

Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

--- Roberto De Pedrini Faq400.com
About author

Founder di Faq400 Srl, IBM Champion, ideatore del sito Faq400.com e del Blog blog.faq400.com. Sviluppatore RPG da quando avevo i pantaloni corti, forte sostenitore della piattaforma IBM i (ex AS400), ho sempre cercato di convididere le mie conoscenze con gli altri tramite forum, eventi e corsi. Oggi, tramite Faq400 Srl, cerchiamo di aiutare le aziende a sfruttare al meglio questa fantastica piattaforma IBM i.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *