-- sizeMb == 当前表空间对应物理文件的大小之和
-- maxMb == 可自动扩展到的最大大小
-- freeMb == 不扩展情况下的可用空间
-- maxFreeMb == 扩展情况下的可用空间
-- usedMb == 当前逻辑使用量

select 	percentused , 
		tablespace_name, 
		sizeMb , 
		maxMb , 
		freeMb , 
		maxMb - usedMb maxFreeMb , 
		usedMb , 
		sysdate 
  from (SELECT NVL( round((d.sizeMb - round(sum(f.bytes)) / 1048576) / (case
                       when d.sizemb > d.maxMb then
                        d.sizeMb
                       else
                        d.maxmb
                     end) * 100) , 100 )  percentused,
               d.tablespace_name,
               d.sizeMb,
               case
                       when d.sizemb > d.maxMb then
                        d.sizeMb
                       else
                        d.maxmb
                     end maxMb,
               nvl( sum(f.bytes) / 1048576 , 0 )  freeMb,
               d.sizeMb - round(sum(f.bytes)) / 1048576 usedMb, 
               sysdate
          from dba_free_space f,
               (select tablespace_name,
                       sum(decode(maxbytes, 0, bytes, maxbytes)) / 1048576 maxMb,
                       sum(bytes) / 1048576 sizeMb
                  from dba_data_files
                 group by tablespace_name) d
         where f.tablespace_name(+) = d.tablespace_name
         group by d.tablespace_name, d.sizeMb, d.maxMb
         order by percentused desc);
  • No labels