select substr(t.tablespace_name,1,30) TABLESPACE_NAME, round(sum(t.totalbyte)/1024/1024,1) "Total MB", round((round(sum(t.totalbyte)/1024/1024,1)-round(sum(t.sumbyte)/1024/1024,1))/round(sum(t.totalbyte)/1024/1024,1)*100,2) "Used%", round(sum(t.totalbyte)/1024/1024,1)-round(sum(t.sumbyte)/1024/1024,1) "Used MB", round(sum(t.sumbyte)/1024/1024,1) "Free MB" from ( ( select tablespace_name,sum(bytes) totalbyte,0 sumbyte from dba_data_files group by tablespace_name ) union ( select tablespace_name,0 totalbyte,sum(bytes) sumbyte from dba_free_space group by tablespace_name ) ) t group by t.tablespace_name order by TABLESPACE_NAME;