DBA 권한이 있을때 테이블들의 테이블 스페이스 사용현황을 알아보는 쿼리 입니다.
SELECT
a.TABLESPACE_NAME,
a.BYTES / 1024 / 1024 AS "Total (MB)",
(a.BYTES - NVL(b.BYTES, 0)) / 1024 / 1024 AS "Used (MB)",
NVL(b.BYTES, 0) / 1024 / 1024 AS "Free (MB)",
ROUND((a.BYTES - NVL(b.BYTES, 0)) / a.BYTES * 100, 2) AS "Used (%)",
ROUND(NVL(b.BYTES, 0) / a.BYTES * 100, 2) AS "Free (%)"
FROM
(SELECT TABLESPACE_NAME, SUM(BYTES) BYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) a,
(SELECT TABLESPACE_NAME, SUM(BYTES) BYTES FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) b
WHERE a.TABLESPACE_NAME = b.TABLESPACE_NAME (+)
ORDER BY 1;
위 쿼리는 테이블스페이스의 총 크기, 사용 중인 크기, 남은 크기, 사용률 및 남은 용량의 비율을 보여줍니다.
참고로, DBA_DATA_FILES 및 DBA_FREE_SPACE 뷰는 DBA 사용 권한이 필요합니다. 따라서 사용자 수준에서는 USER_DATA_FILES 및 USER_FREE_SPACE 뷰를 사용하여 사용 가능한 정보를 제한적으로 볼 수 있습니다.