set lines 200
column tablespace_name format a29
column AutoExpandStatus format a20
column MaxGBytes format 999999999
column pct_warn format a5
select max1.tablespace_name, Total_GB,GB_used ,GB_free,trunc(pct) "UsedPercent%",trunc(maxbytes) as " MaxGBytes" ,pct_warn ,round(100*GB_used/maxbytes,2) as "growupPercent",
(case when ((GB_used/maxbytes)>0.9) then 'Almost Full' else 'Will Auto Increase' end ) AutoExpandStatus
from (select T.TABLESPACE_NAME as tablespace_name,
sum(decode(d.MAXBYTES,0,d.bytes,d.maxbytes)/1024/1024/1024) as maxbytes
from dba_tablespaces t, dba_data_files d where t.TABLESPACE_NAME=d.TABLESPACE_NAME group by T.TABLESPACE_NAME) max1,
(select tbs.tablespace_name,
ROUND((tot.bytes/1024/1024/1024),1) Total_GB,
ROUND(trunc(tot.bytes/1024/1024/1024-sum(nvl(fre.bytes,0))/1024/1024/1024),1) GB_used,
ROUND(trunc(sum(nvl(fre.bytes,0))/1024/1024/1024),1) GB_free,
(1-sum(nvl(fre.bytes,0))/tot.bytes)*100 pct,
decode(
greatest((1-sum(nvl(fre.bytes,0))/tot.bytes)*100, 90),
90, '', '*'
) pct_warn
from dba_free_space fre,
(select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) tot,
dba_tablespaces tbs
where tot.tablespace_name = tbs.tablespace_name
and fre.tablespace_name(+) = tbs.tablespace_name
group by tbs.tablespace_name, tot.bytes/1024/1024/1024, tot.bytes) avail1
where avail1.tablespace_name=max1.tablespace_name;