select (tablespace_name) "表空间名",
sum(total_size) "总空间/M",
sum(total_free) "剩余空间/M",
sum(max_continue) "最大连续空间/M",
round(sum(total_free) / sum(total_size) * 100) "剩余百分比/ratio"
from ((select tablespace_name,
(0) total_size,
round(sum(bytes) / 1024 / 1024, 2) total_free,
round(max(bytes) / 1024 / 1024, 2) max_continue
from dba_free_space
group by tablespace_name) union all
(select tablespace_name, round(sum(bytes) / 1024 / 1024, 2), 0, 0
from dba_data_files
group by tablespace_name))
group by tablespace_name
order by 5 asc;
select total.tablespace_name,file_id,
round(total.MB, 2) as Total_MB,
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct
from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_free_space
group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB ,file_id
from dba_data_files
group by tablespace_name,file_id) total
where free.tablespace_name = total.tablespace_name;