SELECT D.TABLESPACE_NAME,
SPACE "SUM_SPACE(M)",
BLOCKS SUM_BLOCKS,
SPACE-NVL(FREE_SPACE,0)"USED_SPACE(M)",
ROUND((1 - NVL(FREE_SPACE,0) /SPACE)*100, 2) "USED_RATE(%)" ,
FREE_SPACE "FREE_SPACE(M)"
FROM(SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES)/(1024 *1024),2) SPACE,
SUM(BLOCKS) BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES)/(1024 *1024),2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME =F.TABLESPACE_NAME(+)
ORDERBY "USED_RATE(%)" DESC;