viernes, 10 de agosto de 2012

Sentencia SQL para conocer el espacio asignado, usado y libre de los tablespaces de una base de datos Oracle

La siguiente sentencia SQL nos permite conocer cuál es el espacio usado, el espacio asignado y el espacio libre de los tablespaces de una base de datos Oracle que no son temporary. Estoy seguro le va a ser útil a  todo DBA Oracle para alertar problemas de espacio en la base de datos.


SELECT A.TABLESPACE_NAME, A.MB_ASIGNADOS, B.MB_USADOS, A.MB_ASIGNADOS - B.MB_USADOS AS MB_LIBRES, (B.MB_USADOS / A.MB_ASIGNADOS) *100 PORCENTAJE_USADO
FROM
(
SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS MB_ASIGNADOS, COUNT(1) AS CANT_DATAFILES
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME
) A,
(
SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS MB_USADOS, COUNT(1) AS CANT_SEGMENTOS
FROM DBA_SEGMENTS
GROUP BY TABLESPACE_NAME
) B
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME;