Last Updated on 22 Marzo 2020 by Roberto De Pedrini
I suggerimenti di MarkOne – n. 6
Nel numeroso elenco di funzioni e viste della famiglia DB2 for i Service, ne esistono alcune che consentono di gestire gli oggetti aree dati (*DTAARA) tramite istruzioni SQL.
Index
Elencare le aree dati
Per ottenere un elenco delle aree dati presenti in un libreria si può usare la funzione di tabella OBJECT_STATISTICS:
select OBJNAME "Nome", OBJTEXT "Descrizione", OBJOWNER "Proprietario", timestamp(OBJCREATED, 0) "Data/ora creazione", timestamp(CHANGE_TIMESTAMP, 0) "Data/ora ult.mod.", timestamp(LAST_USED_TIMESTAMP, 0) "Data/ora ult.utilizzo", DAYS_USED_COUNT "GG util."
from table(QSYS2/OBJECT_STATISTICS('QUSRSYS', '*DTAARA'))
order by OBJNAME;
Esplorare il contenuto delle aree dati
La vista DATA_AREA_INFO e la funzione di tabella DATA_AREA_INFO ci consentono di reperire il contenuto di un’area dati. Ovvero un metodo equivalente al comando CL RTVDTAARA e alla API QWCRDTAA.
Reperire il contenuto di una singola area dati:
select rtrim(DATA_AREA_VALUE) "Valore", DATA_AREA_TYPE "Tipo", LENGTH "Lungh.", DECIMAL_POSITIONS "Dec."
from table(QSYS2/DATA_AREA_INFO(DATA_AREA_LIBRARY => '*LIBL', DATA_AREA_NAME => 'QSS1MRI'));
Reperire il contenuto di un elenco di aree dati:
select DATA_AREA_NAME "Nome", rtrim(DATA_AREA_VALUE) "Valore", DATA_AREA_TYPE "Tipo", LENGTH "Lungh.", DECIMAL_POSITIONS "Dec.", TEXT_DESCRIPTION "Descrizione"
from DATA_AREA_INFO
where DATA_AREA_LIBRARY = 'QUSRSYS' and DATA_AREA_NAME in('QINZPCSDA', 'QIZAVRM', 'QRCLSTG', 'QSMTPQ', 'QSS1MRI', 'QTMSCCHG')
order by DATA_AREA_NAME;
La funzione di tabella DATA_AREA_INFO consente anche di reperire il valore della local data area (*LDA). Per esempio proviamo a modificare il contenuto della *LDA con:
call qcmdexc('CHGDTAARA DTAARA(*LDA (10 5)) VALUE(''12345'')');
E poi visualizziamo il contenuto con:
select rtrim(DATA_AREA_VALUE) "Valore"
from table(QSYS2/DATA_AREA_INFO(DATA_AREA_NAME => '*LDA'));
Quando sono stati eseguiti gli ultimi salvataggi importanti?
Esistono alcune aree dati che ci danno informazioni sulla data/ora dell’ultima esecuzione di salvataggi importanti eseguiti su IBM i (SAVSYS, SAVCFG…). Tramite DB2 for i service è facile consultare lo stato con una semplice istruzione SQL:
select OBJNAME "Nome", OBJTEXT "Descrizione", timestamp(SAVE_TIMESTAMP, 0) "Data/ora salvataggio"
from table(QSYS2/OBJECT_STATISTICS('QSYS', '*DTAARA'))
where OBJNAME like 'QSAV%'
order by OBJNAME;