SET LINESIZE 160
SELECT
TRIM(T.TABLESPACE_NAME)
,TRUNC(M.MAXBYTES / (1024*1024*1024), 0) AS MAXBYTES_GB
,TRUNC(T.BYTES / (1024*1024) , 0) AS TOTAL_MB
,ROUND((T.BYTES - F.BYTES) / (1024*1024) , 0) AS USED_MB
,ROUND(F.BYTES / (1024*1024) , 0) AS FREE_MB
,ROUND((1-F.BYTES / T.BYTES) * 100, 2) AS RATE
FROM
(
SELECT
TABLESPACE_NAME
,SUM(BYTES) BYTES
FROM
SYS.DBA_FREE_SPACE
GROUP BY
TABLESPACE_NAME
) F
,(
SELECT
TABLESPACE_NAME
,SUM(BYTES) BYTES
FROM
SYS.DBA_DATA_FILES
GROUP BY
TABLESPACE_NAME
) T
,(
SELECT
TABLESPACE_NAME
,SUM(MAXBYTES) MAXBYTES
FROM
SYS.DBA_DATA_FILES
GROUP BY
TABLESPACE_NAME
) M
WHERE
T.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
AND T.TABLESPACE_NAME = M.TABLESPACE_NAME(+)
/