Sapere quanto spazio occupa una libreria

Rivista il

Accedi per salvare

Il totale della libreria:

SELECT OBJECT_COUNT, LIBRARY_SIZE / 1024 / 1024 AS MB, LIBRARY_SIZE_COMPLETE
  FROM TABLE(QSYS2.LIBRARY_INFO('PRODLIB'))

LIBRARY_SIZE è in byte e comprende gli oggetti e la libreria stessa; sopra il miliardo di byte è arrotondato. Se LIBRARY_SIZE_COMPLETE vale NO, qualche oggetto è rimasto fuori perché bloccato o perché non si hanno diritti su di esso. IBM avverte che su una libreria con molti oggetti il calcolo può richiedere tempo.

Ma il totale serve poco: quello che interessa è chi occupa spazio.

SELECT OBJNAME, OBJTYPE,
       OBJSIZE / 1024 / 1024 AS MB,
       LAST_USED_TIMESTAMP
  FROM TABLE(QSYS2.OBJECT_STATISTICS('PRODLIB', '*ALL'))
 ORDER BY OBJSIZE DESC
 FETCH FIRST 20 ROWS ONLY

Le librerie più grandi del sistema, quando non si sa da dove partire:

SELECT L.OBJNAME AS LIBRERIA, I.LIBRARY_SIZE / 1024 / 1024 AS MB
  FROM TABLE(QSYS2.OBJECT_STATISTICS('QSYS', '*LIB')) L,
       TABLE(QSYS2.LIBRARY_INFO(L.OBJNAME)) I
 ORDER BY I.LIBRARY_SIZE DESC
 FETCH FIRST 20 ROWS ONLY

Calcola la dimensione di ogni libreria del sistema, quindi è lenta: va lanciata quando si ha tempo. Ordinare le librerie per OBJSIZE di OBJECT_STATISTICS non serve, perché quella è la dimensione dell'oggetto libreria, non del suo contenuto.

Esempio: la libreria che cresce e nessuno sa perché

Sapere che PRODLIB occupa 40 GB non dice niente. Sapere che sei mesi fa ne occupava 28, e quali oggetti hanno preso i 12 GB di differenza, dice tutto.

Una fotografia al mese, in una tabella creata dalla query stessa:

CREATE TABLE MIALIB/STORDIM AS (
  SELECT CURRENT DATE AS RILEVATO, OBJNAME, OBJTYPE, OBJSIZE
    FROM TABLE(QSYS2.OBJECT_STATISTICS('PRODLIB', '*ALL'))
) WITH NO DATA

Poi il confronto fra due fotografie, che è la query che serve davvero:

SELECT o.OBJNAME, o.OBJTYPE,
       n.OBJSIZE - o.OBJSIZE AS CRESCITA
  FROM MIALIB/STORDIM o
  JOIN MIALIB/STORDIM n
    ON n.OBJNAME = o.OBJNAME AND n.OBJTYPE = o.OBJTYPE
 WHERE o.RILEVATO = '2026-02-01'
   AND n.RILEVATO = '2026-08-01'
 ORDER BY CRESCITA DESC
 FETCH FIRST 20 ROWS ONLY

La risposta può essere, per esempio, un file di log applicativo che nessuno svuota, o una tabella di lavoro che doveva essere temporanea.

Suggerimento

la colonna LAST_USED_TIMESTAMP insieme alla dimensione è la coppia che serve davvero. Un oggetto grande e usato ieri non si tocca; uno grande e mai usato da tre anni è il primo candidato.


Rilasci. OBJECT_STATISTICS e LIBRARY_INFO sono nella documentazione IBM di 7.5. Se una delle due risponde SQL0204 su un rilascio più vecchio, il totale di una libreria lo dà anche RTVLIBD, di cui LIBRARY_INFO è l'equivalente SQL.

Fonti

← Torna al blog

Commenti

Nessun commento ancora. Sii il primo a commentare!

Devi avere un account per commentare. Accedi · Registrati