SELECT v.ts#, v.name, f.files, DECODE(b.contents,'TEMPORARY','TEMP',b.contents) CONTYPE, TO_CHAR(round(f.fsize,0)) || ' Mb' filesize, TO_CHAR(round(f.flimit,0)) || ' Mb' filelimit, TO_CHAR(round(f.flimit,0) - round(f.fsize,0)) || ' Mb' fileavail, TO_CHAR(round ( round (NVL(s.FRBYTES,0) / 1048576, 0) / round(f.fsize,0) , 2 ) * 100) || '%' ftotalb, b.STATUS, (CASE WHEN b.contents='TEMPORARY' THEN '{temp}' WHEN b.contents='UNDO' THEN '{undo}' ELSE NVL(to_char(z.SEGMENTS),'EMPTY!!!') END) SGMTS FROM dba_tablespaces b, v$tablespace v, (SELECT tablespace_name, SUM(BYTES) "FRBYTES" FROM dba_free_space GROUP BY tablespace_name) s, (SELECT tablespace_name, SUM( CASE WHEN autoextensible = 'YES' THEN maxbytes ELSE BYTES END ) / 1048576 "FLIMIT", SUM(BYTES) / 1048576 "FSIZE", COUNT (file_name) "FILES" FROM dba_data_files GROUP BY tablespace_name UNION SELECT tablespace_name, SUM( CASE WHEN autoextensible = 'YES' THEN maxbytes ELSE BYTES END ) / 1048576 "FLIMIT", SUM(BYTES) / 1048576 "FSIZE", COUNT (file_name) "FILES" FROM dba_temp_files GROUP BY tablespace_name) f, (select count(1) SEGMENTS, tablespace_name from dba_segments group by tablespace_name) z WHERE s.tablespace_name (+) = v.name AND f.tablespace_name (+) = v.name AND z.tablespace_name (+) = v.name AND b.tablespace_name = v.name ORDER BY v.ts#;