select df.tablespace_name "TABLESPACE_NAME", totalspace "TOTALSPACE/M", freespace "FREESPACE/M", round((1 - freespace / totalspace) * 100, 2) "USED%" from (select tablespace_name, round(sum(bytes) / 1024 / 1024) totalspace from dba_data_files group by tablespace_name) df, (select tablespace_name, round(sum(bytes) / 1024 / 1024) freespace from dba_free_space group by tablespace_name) fs where df.tablespace_name = fs.tablespace_name;