Con il precedente articolo abbiamo dato una panoramica su i problemi derivanti dall’uso dei campi LOB ed un punto di vista personale su ciò che è bene e male, scomodando questi massimi sistemi.
Ora vogliamo affrontare (come promesso) più praticamente l’argomento fornendo alcuni utili strumenti per verificare la configurazione della base dati in (vostro) uso.
Spazio occupato dai campi LOB
Prima di tutto calcoliamo lo spazio occupato dagli oggetti in termini di tipo segmento, in particolare considerando il LOBSEGMENT:
SELECT b.table_name || '.' || a.segment_name as OGGETTO, a.segment_type, trunc( SUM(a.bytes)/1024/1024, 0) MB, b.IN_ROW FROM user_segments a JOIN user_lobs b ON a.segment_name = b.segment_name WHERE SEGMENT_TYPE = 'LOBSEGMENT' GROUP BY b.table_name || '.' || a.segment_name , a.segment_type, b.IN_ROW ORDER BY 2,3 desc;
Qualora la dimensione dei LOBSEGMENT associati ad una tabella per una sua colonna LOB risulti nulla, è evidente che (se i campi non sono vuoti) lo spazio occupato è quello del segmento regolare, ossia la scrittura del campo LOB è di tipo “IN ROW”.
Possiamo verificarlo vedendo che la configurazione IN ROW sia attiva per tale tabella:
SELECT SEGMENT_NAME, IN_ROW FROM USER_LOBS WHERE TABLE_NAME = '&tablename';
Qualora volessimo calcolare la dimensione occupata in linea dal campo LOB occorrerà eseguire la seguente:
SELECT SUM( DBMS_LOB.getlength( &columnname ) / 1024 / 1024 ) AS MB FROM &tablename;
Possiamo verificare eventualmente lo spazio occupato dai segmenti LOB di una tabella nota con:
SELECT table_name, column_name, segment_name, a.bytes FROM user_segments a JOIN user_lobs b USING (segment_name) WHERE b.table_name = '&tablename';
La verifica dell’abilitazione al row movement
Più genericamente possiamo verificare lo stato di configurazione del row movement di tutte le tabelle nello schema con:
select TABLE_NAME, 'ROW MOVEMENT '||ROW_MOVEMENT from USER_TABLES WHERE ROW_MOVEMENT <> 'DISABLED' order by TABLE_NAME;
Spero che queste poche query possano esserVi utili ad orientarvi alla corretta interpretazione della vostra base dati.