Oracle11g版本增加了一个表空间查询的视图 DBA_TABLESPACE_USAGE_METRICS,非常方便,不像以前要写很长的sql去查询了,但简便的同时也带来了一些问题,而且有些问题还非常隐蔽,接下来逐一说明一下。
set linesize 200 pagesize 99
col tablespace_name for a36
select TABLESPACE_NAME,ROUND((t.TABLESPACE_SIZE * p.value)/1024/1024/1024) TABLESPACE_SIZE_GB,ROUND((t.USED_SPACE * p.value)/1024/1024/1024) USED_SPACE_GB,USED_PERCENT
from DBA_TABLESPACE_USAGE_METRICS t
INNER JOIN v$parameter p ON p.name = 'db_block_size' order by 4 desc;
执行结果如下
TABLESPACE_NAME TABLESPACE_SIZE_GB USED_SPACE_GB USED_PERCENT
------------------ ------------------ ------------- ------------
UNDOTBS1 350 309 88.3769742
TBS_DATA2 7176 5252 73.1868556
TBSFSH_DATA21 10224 7294 71.3478941
TBSFSH_DATA2 7049 4230 60.0061867
SYSAUX 64 24 38.0566778
TBSFSH_DATA22 3683 1046 28.3976447
SYSTEM 64 6 9.74960792
TEMP 976 40 4.11586419
UNDOTBS2 448 0 .110953248
该视图虽然带来了简便,但也有一下注意的地方
1、它的大小计算单位是block,所以需要关联下数据库的block大小
2、表空间总容量如果是可自动扩展的datafile,那么结果就是所有datafile最大的max值的和
3、该视图不稳定,add datafile后不一定及时刷新,可能会等一段时间
4、当表空间drop datafile后该视图由于bug,总容量不会减小,需要重启实例
5、某表空间truncate某张表后,使用率有时不会下降,但作为workaround,手动创建一个表再drop后该视图会刷新
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26964624/viewspace-2564164/ ,如需转载,请注明出处,否则将追究法律责任。