较为靠谱的oracle表空间使用率

1680阅读 0评论2023-07-19 brjl
分类:Oracle

基本上正确

  1. select a.tablespace_name,round(100*(a.total_mb-b.free_mb)/a.extent_mb,2) used_pct
  2.   from (select tablespace_name,round(sum(nvl(bytes,0))/1024/1024,2) total_mb,
  3.                round(sum(greatest(maxbytes,bytes))/1024/1024,2) extent_mb
  4.           from dba_data_files group by tablespace_name) a,
  5.        (select tablespace_name,round(sum(nvl(bytes,0))/1024/1024,2) free_mb
  6.           from dba_free_space group by tablespace_name) b
  7.  where a.tablespace_name = b.tablespace_name(+)
  8. union all
  9. select a.tablespace_name,round(100*(b.used_mb)/a.extent_mb,2)
  10.   from (select tablespace_name,round(sum(greatest(maxbytes,bytes))/1024/1024,2) extent_mb
  11.           from dba_temp_files group by tablespace_name) a,
  12.        (select tablespace_name,sum(bytes_used)/1024/1024 used_mb
  13.          from gv$temp_extent_pool group by tablespace_name) b
  14.  where a.tablespace_name = b.tablespace_name(+)
  15.  order by 1;


如果文件开启了自动扩展,那么按可扩展的 greatest() 值计算,而实际使用时要注意磁盘空间是否支持
如果创建了一个bigfile表空间且数据没超过1T,那么这个使用率可能很低(<3%)。
上一篇:recover 时需要检查的信息
下一篇:大量宽度不够问题,简单加工