Oracle统计信息对数据库性能优化和故障排除都相当重要,目前接触到的与统计信息相关的视图大体有 4 个:
1、v$sysstat 视图
该视图用于记录系统级的统计信息,共 5 个字段:
STATISTIC#——统计编号、NAME——统计名、CLASS——统计类型、VALUE——统计值、STAT_ID——统计ID
2、v$mystat 视图
该视图用户记录当前会话的统计信息,共 3 个字段:
SID——会话id、STATISTIC#——统计编号、VALUE——统计值
3、v$sesstat 视图
该视图用户记录所有会话的统计信息(会话级),与v$mystat 视图一样共 3 个字段:
SID——会话id、STATISTIC#——统计编号、VALUE——统计值
4,v$statname 视图
该视图用于记录具体某一类统计有多少种统计子类型,目前Oracle 11gR2共有8类统计:1 - User,2 - Redo,4 - Enqueue,8 - Cache,16 - OS,32 - Real Application Clusters,64 - SQL,128 - Debug。该视图共 4 个字段:
STATISTIC#——统计编号、NAME——统计名、CLASS——统计类型、STAT_ID——统计ID
5,v$segstat 视图 或则 v$segment_statistics 视图(信息更全而已)
该视图用于统计对象信息,属于对象级的统计信息,共6个字段:
TS# —— 表空间号(参看v$tablespace视图)
OBJ# —— 字典对象号(Dictionary object number,即object_id)
DATAOBJ# —— 数据对象号(Data object number)
STATISTIC_NAME —— 统计名(Name of the statistic,大概21个,logical reads,physical reads,physical writes,space used,space allocated等)
STATISTIC# —— 统计号(Statistic number)
VALUE —— 统计值
6,v$sql 视图(SQL级统计视图)
其他统计视图:V$SERVICE_STATS、V$CLIENT_STATS等
示例:
(1)查询当前会话的Redo生成情况
SQL>col name for a30
SQL>select a.name, b.value
from v$statname a, v$mastat b
where a.STATISTIC#=b.STATISTIC# and a.name='redo size';
(2)查询数据库全局Redo的生成量
SQL>select name, value from v$sysstat where name='redo size';
如果各位有补充的,欢迎留言,相互交流,互相促进,共同学习!