重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2553|回复: 0
打印 上一主题 下一主题

[Oracle] 关于使用oracle的DBA_TABLESPACE_USAGE_METRICS视图查看表空间使用率

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-19 19:24:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于DBA_TABLESPACE_USAGE_METRICS的列说明
  
Column
  
Datatype
NULL
Description
TABLESPACE_NAME
VARCHAR2(30)
Tablespace name
USED_SPACE
NUMBER
Total space  consumed by the tablespace,in database blocks
TABLESPACE_SIZE
NUMBER
Total size of the  tablespace,in database blocks
USED_PERCENT
NUMBER
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
  
Datatype
Description
TABLESPACE_ID
NUMBER
ID of the  tablespace to which the file belongs
RFNO
NUMBER
Relative file  number of the file
ALLOCATED_SPACE
NUMBER
Total allocated  space in the file
FILE_SIZE
NUMBER
Current file size
FILE_MAXSIZE
NUMBER
Maximum file size
CHANGESCN_BASE
NUMBER
SCN base of the  last change to the file
CHANGESCN_WRAP
NUMBER
SCN wrap of the  last change to the file
FLAG
NUMBER
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视图查询的结果就不准确了,还要使用传统的方法查询。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-15 03:30 , Processed in 0.090408 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表