I stole this from VS Babu
SELECT a.TABLESPACE_NAME, a.BYTES bytes_used, b.BYTES bytes_free, b.largest, round( ( ( a.BYTES - b.BYTES ) / a.BYTES ) * 100, 2 ) percent_used FROM ( SELECT TABLESPACE_NAME, sum( BYTES ) BYTES FROM dba_data_files GROUP BY TABLESPACE_NAME ) a, ( SELECT TABLESPACE_NAME, sum( BYTES ) BYTES, max( BYTES ) largest FROM dba_free_space GROUP BY TABLESPACE_NAME ) b WHERE a.TABLESPACE_NAME = b.TABLESPACE_NAME ORDER BY ( ( a.BYTES - b.BYTES ) / a.BYTES ) DESC