Olá,
Eu uso esse select e ele é bem consistente com as informações q ele retorna.
select x.owner,x.table_name,trunc((y.resto / (x.next_extent/1024/1024)),0) N_EXTENTS ,
trunc(x.next_extent/1024/1024) TAMANHO_EXTENT,TRUNC(y.resto) TBS_FREE, x.tablespace_name
from dba_tables X,
(SELECT A TABLESPACE,SUM(B)/1024/1024 “TOTAL(M)” ,SUM(C)/1024/1024 “USADO(M)”, (SUM(B)-SUM(C))/1024/1024 “RESTO”
FROM (
select TABLESPACE_NAME A, sum(BYTES) B , 0 C from dba_data_files group by TABLESPACE_NAME
UNION
select TABLESPACE_NAME A,0 B,sum(BYTES) C from dba_segments group by TABLESPACE_NAME
)
GROUP BY A
) Y
where Y.TABLESPACE = X.TABLESPACE_name
and X.NEXT_EXTENT/1024/1024 * 10 >= Y.RESTO
and X.owner not in (‘SYSTEM’,’SYS’,’OUTLN’,’MONITOR’)
ORDER BY trunc((y.resto / (x.next_extent/1024/1024)),0);
Espero ter ajudao.
Abraço.
Hudyson Santos
DBA Oracle Pleno