Oracle11g新增视图查询表空间使用率DBA_TABLESPACE_USAGE_METRICS

来源:这里教程网 时间:2026-03-03 12:53:54 作者:

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后该视图会刷新

相关推荐