关于DBA_TABLESPACE_USAGE_METRICS的列说明 Column | | | | | | | | | | | Total space consumed by the tablespace,in database blocks | | | | Total size of the tablespace,in database blocks | | | | Percentage of used space,as a function of the maximum possible tablespace size |
从官网的说明来看,通过视图DBA_TABLESPACE_USAGE_METRICS可以很方便的查看各类型表空间的使用情况,包括永久、临时和undo表空间。但是,通过这个视图查询到的结果,和传统的SQL脚步查询到的结果不一致,而且相差很大。 select text fromdba_views where view_name='DBA_TABLESPACE_USAGE_METRICS'; TEXT ----------------------------------------------------------------- SELECT t.name, sum(f.allocated_space),sum(f.file_maxsize), (sum(f.allocated_space)/sum(f.file_maxsize))*100 FROM sys.ts$ t, v$filespace_usage f WHERE t.online$ != 3 and t.bitmapped <> 0 and t.contents$ = 0 and bitand(t.flags, 16) <> 16 and t.ts# = f.tablespace_id GROUP BY t.name, f.tablespace_id union SELECT t.name, sum(f.allocated_space), sum(f.file_maxsize), (sum(f.allocated_space)/sum(f.file_maxsize))*100 FROM sys.ts$ t, v$filespace_usage f WHERE t.online$ != 3 and t.bitmapped <> 0 and t.contents$ <> 0 and f.flag = 6 and t.ts# = f.tablespace_id GROUP BY t.name, f.tablespace_id union SELECT t.name, sum(f.allocated_space), sum(f.file_maxsize), (sum(f.allocated_space)/sum(f.file_maxsize))*100 FROM sys.ts$ t, gv$filespace_usage f,gv$parameter param WHERE t.online$ != 3 and t.bitmapped <> 0 and f.inst_id = param.inst_id and param.name = 'undo_tablespace' and t.name = param.value and f.flag = 6 and <------在12C之前,UNDO表空间在GV $ FILESPACE_USAGE中将其数据文件标记为值6, t.ts# = f.tablespace_id GROUP BY t.name, f.tablespace_id 可以看出,DBA_TABLESPACE_USAGE_METRICS查询到的关键数据出自v$filespace_usage视图。
v$filespace_usage视图,11g官方文档的说明如下:
Column | | | | | ID of the tablespace to which the file belongs | | | Relative file number of the file | | | Total allocated space in the file | | | | | | | | | SCN base of the last change to the file | | | SCN wrap of the last change to the file | | | Flags for file attributes |
根据以上分析,可以得出以下结论: 1、DBA_TABLESPACE_USAGE_METRICS的USED_SPACE是已经分配的空间,对应 V$FILESPACE_USAGE 的ALLOCATED_SPACE字段。 2、DBA_TABLESPACE_USAGE_METRICS的 TABLESPACE_SIZE对应V$FILESPACE_USAGE的 FILE_MAXSIZE字段(而不是FILE_SIZE)。 注意:这里对应的是最大值。如果数据文件是自动增长的,那么,对于8k的block,这里的最大值就是32G, 也就是通过DBA_TABLESPACE_USAGE_METRICS视图查询显示的4194302个blocks。 3、 对于非自动扩展的表空间,使用DBA_TABLESPACE_USAGE_METRICS视图,与传统脚本使用的DBA_DATA_FILE和DBA_FREE_SPACE查询的结果是一致的。 4、对于自动扩展的表空间,DBA_TABLESPACE_USAGE_METRICS视图查询的结果就不准确了,还要使用传统的方法查询。
|