REM Free space in datafile

set linesize 300;
select substr(a.file_name,1,30),
a.file_id,
substr(a.tablespace_name,1,20),
a.bytes allocated,
nvl(b.free,0) free,
a.bytes-nvl(b.free,0) used
from dba_data_files a,
( select file_id, sum(bytes) free
from dba_free_space
group by file_id ) b
where a.file_id = b.file_id (+);