
Last Updated on 17 Agosto 2022 by Roberto De Pedrini
Supponiamo di voler tenere sotto controllo i file (dovremmo abituarci a chiamarle Tabelle, come il resto del mondo!) di un elenco di librerie di dati, di volerne vedere le dimensioni, il numero di record e il numero di record cancellati (calcolando una eventuale dimensione dell’oggetto dopo una eventuale reorganize (RGZPFM)).
Con un semplice query come questo possiamo avere l’elenco delle top 100 tabelle che “mangiano” più spazio di tre liberie indicate in una temporary table da mettere in Cross Join Lateral con la UDTF object_statistics e la systablestat:
SELECT *
FROM (
VALUES('FAQ400'),('QGPL'),('SAMPLEDB')
) t(LibraryToCheck)
cross join lateral
(select objlongschema, objname, objlongname, objtype, objattribute, objowner, objcreated, cast(objsize/1000000 as integer) as ObjSizeMB,
int(objsize/(NUMBER_ROWS + NUMBER_DELETED_ROWS)*NUMBER_ROWS/1000000) as AfterReorgize, b.last_used_timestamp, number_rows, number_deleted_rows, objtext FROM TABLE(QSYS2.OBJECT_STATISTICS(t.LibraryToCheck, '*ALL')) a
left join qsys2.systablestat b on a.objname=b.system_table_name and a.objlongschema=b.table_schema
)
order by objsizeMB desc
fetch first 100 rows only;
