select A.tablespace_name, b_allocated/1024/1024 mb_allocated, b_max/1024/1024 mb_max, (b_free + (b_max - b_allocated))/1024/1024 mb_free, round(((100 * (b_free + (b_max - b_allocated))) / b_max), 2) pct_free, C.autoextensible from ( select tablespace_name, sum(bytes) as b_free from dba_free_space group by tablespace_name ) B, ( select tablespace_name, sum(bytes) as b_allocated, sum(greatest(bytes, maxbytes)) b_max, max(autoextensible) autoextensible from dba_data_files group by tablespace_name ) C, dba_tablespaces A where A.tablespace_name = B.tablespace_name and A.tablespace_name = C.tablespace_name and A.contents = 'PERMANENT' -- and round(((100 * (b_free + (b_max - b_allocated))) / b_max), 2) <= 20 order by pct_free asc;