小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
Oracle表空间使用率查看应该是 DBA 日常工作中最常做的事情了,如果 Oracle 数据库的表空间如果使用超过100%,会导致数据库无法使用,因此需要及时扩展!
那么如何快速精准的查询表空间的使用以及大小,经过这么多大佬的经验以及使用,总结出以下的SQL!
通过 sql 查询当前数据库所有表空间的使用率:
set line222
set pagesize1000
col TABLESPACE_NAME for a40
select tbs_used_info.tablespace_name,
tbs_used_info.alloc_mb,
tbs_used_info.used_mb,
tbs_used_info.max_mb,
tbs_used_info.free_of_max_mb,
tbs_used_info.used_of_max || '%' used_of_max_pct
from (select a.tablespace_name,
round(a.bytes_alloc / 1024 / 1024) alloc_mb,
round((a.bytes_alloc - nvl(b.bytes_free,
0)) / 1024 / 1024) used_mb,
round((a.bytes_alloc - nvl(b.bytes_free,
0)) * 100 / a.maxbytes) used_of_max,
round((a.maxbytes - a.bytes_alloc + nvl(b.bytes_free,
0)) / 1048576) free_of_max_mb,
round(a.maxbytes / 1048576) max_mb
from (select f.tablespace_name,
sum(f.bytes) bytes_alloc,
sum(decode(f.autoextensible,
'YES',
f.maxbytes,
'NO',
f.bytes)) maxbytes
from dba_data_files f
group by tablespace_name) a,
(select f.tablespace_name,
sum(f.bytes) bytes_free
from dba_free_space f
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name(+)) tbs_used_info
order by tbs_used_info.used_of_max desc;
查询结果如下:
上述查询结果包含数据库中所有表空间的使用情况!
📢 注意: 查询出的使用率是最真实的,包含数据文件未被扩展的空间,因此如果超过90%,就要尽快增加了!
本次分享到此结束啦~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。
❤️ 技术交流可以 关注公众号:Lucifer三思而后行 ❤️