set pages 999
set lines 190;
set pause off
column file_name format a70;
column file_id format 999;
column tablespace_name format a35;
column used_bytes format 999999;
column smallest format 999999;
column currsize format 999999;
break on report
compute sum label total of used_bytes smallest currsize savings on report
select a.file_name
     , a.file_id
	 , a.tablespace_name
	 , ceil(b.bytes) used_bytes
	 , ceil((nvl(hwm, 1) * db_block_size) / 1024 / 1024) smallest
	 , ceil(blocks * db_block_size / 1024 / 1024) currsize
	 , ceil(blocks * db_block_size / 1024 / 1024) - ceil((nvl(hwm, 1) * db_block_size) / 1024 / 1024) savings
from dba_data_files a
   , (select file_id
           , max(block_id + blocks - 1) hwm
           , sum(nvl(bytes,0))/1024/1024 bytes
      from dba_extents
      group by file_id) b
   , (select value db_block_size 
      from v$parameter 
	  where name = 'db_block_size') c
where a.file_id = b.file_id(+)
order by savings;

