En ocasiones debemos obtener un detalle suficiente del espacio ocupado por un tabla de la BD y sus objetos relacionados.
Para conocer el espacio ocupado por una tabla debemos acceder básicamente a:
- dba_indexes, para obtener los nombres de los índices relacionados con la tabla.
- dba_logs, aquí podemos conocer si existe algún segmento de tipo lob relacionado con la tabla.
- dba_segments, finalmente obtenemos cada uno de los tamaños utilizando los datos anteriores
Por ejemplo, la tabla SCOTT.TABLE_TEST, la consulta sobre dba_indexes:
SQL> SELECT OWNER,INDEX_NAME,TABLE_OWNER,TABLE_NAME FROM dba_indexes WHERE TABLE_OWNER='SCOTT' AND TABLE_NAME='TABLE_TEST';
OWNER INDEX_NAME TABLE_OWNER TABLE_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------------
SCOTT SYS_IL0000130199C00005$$ SCOTT TABLE_TEST
SCOTT TABLE_TEST_P SCOTT TABLE_TEST
Tomamos nota de los índices:
- SYS_IL0000130199C00005$$
- TABLE_TEST_P
Verificamos la existencia de campos LOB con:
SQL> SELECT OWNER,TABLE_NAME,COLUMN_NAME,TABLESPACE_NAME, INDEX_NAME, SEGMENT_NAME FROM dba_lobs WHERE OWNER='SCOTT' AND TABLE_NAME='TABLE_TEST';
OWNER TABLE_NAME COLUMN_NAME TABLESPACE_NAME INDEX_NAME SEGMENT_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------
SCOTT TABLE_TEST DATA CABOFFICEDAT SYS_IL0000130199C00005$$ SYS_LOB0000130199C00005$$
Nos quedamos con el nombre del segmento:
- SYS_LOB0000130199C00005$$
Ahora ya podemos hacer la consulta para obtener los espacios utilizando la información obtenida anteriormente:
SQL> SELECT OWNER,SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024 AS mb,TABLESPACE_NAME FROM DBA_SEGMENTS WHERE OWNER='SCOTT'
AND SEGMENT_NAME IN ('SYS_IL0000130199C00005$$','TABLE_TEST_P','SYS_LOB0000130199C00005$$', 'TABLE_TEST') ORDER BY BYTES DESC; 2
OWNER SEGMENT_NAME SEGMENT_TYPE MB TABLESPACE_NAME
------------------------------ --------------------------------------------------------------------------------- ------------------ ---------- ------------------------------
SCOTT SYS_LOB0000130199C00005$$ LOBSEGMENT 26547 CABOFFICEDAT
SCOTT TABLE_TEST TABLE 953 CABOFFICEDAT
SCOTT TABLE_TEST_P INDEX 23 CABOFFICEIDX
SCOTT SYS_IL0000130199C00005$$ LOBINDEX 10 CABOFFICEDAT
De esta forma obtenemos todo el detalle relacionado con la tabla.
Espero os sirva de utilidad.
Buena entrada