ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle专题深入讨论 » 迟到的发现,关于 v$waitstat 和 x$bh.class

标题: 迟到的发现,关于 v$waitstat 和 x$bh.class
离线 biti_rainy
人生就是如此



精华贴数 37
个人空间 0
技术积分 110918 (4)
社区积分 11770 (123)
注册日期 2001-12-12
论坛徽章:41
现任管理团队成员ITPUB长老会成员ITPUB元老年度论坛发贴之星年度论坛发贴之星ITPUB北京九华山庄2008年会纪念徽章
管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章

发表于 2003-8-18 16:33 
迟到的发现,关于 v$waitstat 和 x$bh.class

郁闷,今天偶才偶然发现:
原来 x$bh.class 中的分类,依次对应于  v$waitstat 中记录

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE    9.2.0.1.0       Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

SQL>

SQL> select * from v$waitstat;

CLASS                   COUNT       TIME
------------------ ---------- ----------
data block                  2          1
sort block                  0          0
save undo block             0          0
segment header              1          0
save undo header            0          0
free list                   0          0
extent map                  0          0
1st level bmb               0          0
2nd level bmb               0          0
3rd level bmb               0          0
bitmap block                0          0

CLASS                   COUNT       TIME
------------------ ---------- ----------
bitmap index block          0          0
file header block           0          0
unused                      0          0
system undo header          0          0
system undo block           0          0
undo header                 0          0
undo block                  0          0

已选择18行。

SQL>


SQL> select distinct class from x$bh order by class ;

     CLASS
----------
         1
         4
         8
         9
        12
        13
        15
        17      从这里开始依次为undo header /undo  block
        18
        19
        20

     CLASS
----------
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31

     CLASS
----------
        32
        33
        34
        35
        36

已选择27行。

SQL>

oracle 7 非系统回滚段是从9开始,8i是从13开始

从这里,基本就可以明白,v$waitstat 就是针对 data buffer 中各类型的block的等待进行统计的


__________________
眼界决定边界,态度决定高度
blog:
人生就是如此
只看该作者    顶部
离线 cyr1974
淡泊明志 宁静志远


精华贴数 2
个人空间 0
技术积分 6698 (193)
社区积分 903 (1012)
注册日期 2003-2-12
论坛徽章:7
ITPUB元老会员2007贡献徽章生肖徽章2007版:鼠生肖徽章2007版:猴  
      

发表于 2004-7-4 11:32 
我的理解,oracle把内存中不同类型的数据块分类用不同的number来代替,而这些不同类型的数据块是在内存中经常出现的,不知道是否整个数据库视图是否也是按照这样的分类来统计的?


v$waitstat视图只是说明不同类型的数据块在内存中的等待情况
x$bh视图是说明内存中不同类型数据块的总体情况


__________________
cyongrui@hotmail.com业余台球爱好者互相交流 共同进步
只看该作者    顶部
离线 biti_rainy
人生就是如此



精华贴数 37
个人空间 0
技术积分 110918 (4)
社区积分 11770 (123)
注册日期 2001-12-12
论坛徽章:41
现任管理团队成员ITPUB长老会成员ITPUB元老年度论坛发贴之星年度论坛发贴之星ITPUB北京九华山庄2008年会纪念徽章
管理团队2007贡献徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章管理团队2006纪念徽章会员2007贡献徽章会员2006贡献徽章

发表于 2004-7-4 15:26 
x$bh  这是所有内存中的 数据块缓冲 的 header ! 而这个 header 中有很多信息,其中一个信息表示 块的分类,oracle用表格状来展现这些header中信息,其中分类部分用 class 来表示

至于 v$waitstat 是当缓冲区中出现可累计等待的时候,就记录下这个等待,根据 块  分类进行累计


__________________
眼界决定边界,态度决定高度
blog:
人生就是如此
只看该作者    顶部
离线 pingshx
民工



精华贴数 0
个人空间 0
技术积分 2914 (529)
社区积分 498 (1411)
注册日期 2003-5-4
论坛徽章:2
会员2006贡献徽章授权会员    
      

发表于 2004-7-6 17:08 
biti,你好,我想问一下,从这SQL select distinct class from x$bh order by class ;执行的记录集里如何看出
undo header /undo block ??


__________________
多看文档少灌水 Cheer up,everything will be ok!-------------------------------------------------------------
只看该作者    顶部
离线 xzh2000
仙人抚我须 结发授长生



精华贴数 13
个人空间 0
技术积分 46440 (14)
社区积分 5155 (284)
注册日期 2002-7-17
论坛徽章:30
现任管理团队成员ITPUB元老授权会员生肖徽章2007版:狗2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:帆船
生肖徽章2007版:虎ITPUB新首页上线纪念徽章数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

发表于 2004-7-7 09:47 
知其然,还要知其所以然也

SQL> select distinct class# from v$bh;

    CLASS#
----------
         1
         4
         8
         9
        12
        13
        15
        17
        18
        19
        20

    CLASS#
----------
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31

    CLASS#
----------
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42

33 rows selected.

SQL> select * from v$waitstat;

CLASS                   COUNT       TIME
------------------ ---------- ----------
data block           23369217    5855617
sort block                  0          0
save undo block             0          0
segment header            238        162
save undo header            0          0
free list                   0          0
extent map                  0          0
1st level bmb             323         95
2nd level bmb              79         35
3rd level bmb               0          0
bitmap block                0          0

CLASS                   COUNT       TIME
------------------ ---------- ----------
bitmap index block          0          0
file header block         220       6458
unused                      0          0
system undo header          0          0
system undo block           0          0
undo header             13694       1794
undo block              16828       2699

18 rows selected.

SQL> select  count(*) from v$rollstat;

  COUNT(*)
----------
        14

SQL>




其中 v$bh 里面的 class# 的 1 ---14 分别对应如下类型
data block           23369217    5855617         -------  1
sort block                  0          0         -------  2
save undo block             0          0        -------  3
segment header            238        162
save undo header            0          0
free list                   0          0
extent map                  0          0
1st level bmb             323         95
2nd level bmb              79         35
3rd level bmb               0          0
bitmap block                0          0

CLASS                   COUNT       TIME
------------------ ---------- ----------
bitmap index block          0          0
file header block         220       6458        -------  13
unused                                           ---------  14


system undo header          0          0         --------   15
system undo block           0          0         ----------   16
undo header 1                                  --------------- 17
undo  block  1                                 -------------- 18
undo  header 2                                   -------------- 19
undo  block   2                                 -------------- 20
依次类推

我这里的 回滚段(算上系统回滚段)一共是 14  = v$rollstat.count(*) ,v$waitstat.count(*) = 18(但是这里计算了 系统回滚段和非系统回滚段共4条记录)
所以就是 14*2 + (18 - 4) = 42
42也就是 v$bh 中类型编号最大的

而中间有些不存在的编号,也就是如
save undo block             0          0        -------  3
这样暂时不存在的block

这是biti的源话


__________________
过目即忘  插柳成荫
只看该作者    顶部
离线 wabjtam123
高级会员



精华贴数 0
个人空间 0
技术积分 7708 (168)
社区积分 47 (5076)
注册日期 2007-3-3
论坛徽章:10
会员2007贡献徽章生肖徽章2007版:鸡生肖徽章2007版:鼠数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星
数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星  

发表于 2008-5-23 08:40 


QUOTE:
原帖由 xzh2000 于 2004-7-7 09:47 发表
知其然,还要知其所以然也

SQL> select distinct class# from v$bh;

    CLASS#
----------
         1
         4
         8
         9
        12
        13
        15
        17
        18
        19
        20

    CLASS#
----------
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31

    CLASS#
----------
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42

33 rows selected.

SQL> select * from v$waitstat;

CLASS                   COUNT       TIME
------------------ ---------- ----------
data block           23369217    5855617
sort block                  0          0
save undo block             0          0
segment header            238        162
save undo header            0          0
free list                   0          0
extent map                  0          0
1st level bmb             323         95
2nd level bmb              79         35
3rd level bmb               0          0
bitmap block                0          0

CLASS                   COUNT       TIME
------------------ ---------- ----------
bitmap index block          0          0
file header block         220       6458
unused                      0          0
system undo header          0          0
system undo block           0          0
undo header             13694       1794
undo block              16828       2699

18 rows selected.

SQL> select  count(*) from v$rollstat;

  COUNT(*)
----------
        14

SQL>




其中 v$bh 里面的 class# 的 1 ---14 分别对应如下类型
data block           23369217    5855617         -------  1
sort block                  0          0         -------  2
save undo block             0          0        -------  3
segment header            238        162
save undo header            0          0
free list                   0          0
extent map                  0          0
1st level bmb             323         95
2nd level bmb              79         35
3rd level bmb               0          0
bitmap block                0          0

CLASS                   COUNT       TIME
------------------ ---------- ----------
bitmap index block          0          0
file header block         220       6458        -------  13
unused                                           ---------  14


system undo header          0          0         --------   15
system undo block           0          0         ----------   16
undo header 1                                  --------------- 17
undo  block  1                                 -------------- 18
undo  header 2                                   -------------- 19
undo  block   2                                 -------------- 20
依次类推

我这里的 回滚段(算上系统回滚段)一共是 14  = v$rollstat.count(*) ,v$waitstat.count(*) = 18(但是这里计算了 系统回滚段和非系统回滚段共4条记录)
所以就是 14*2 + (18 - 4) = 42
42也就是 v$bh 中类型编号最大的

而中间有些不存在的编号,也就是如
save undo block             0          0        -------  3
这样暂时不存在的block

这是biti的源话

不理解啊,为什么 14*2???又为什么要 14*2 + (18 - 4)

此外,这个X$的视图是统计了RAC的两个节点的总和了吧


只看该作者    顶部
离线 solearn
中级会员


精华贴数 0
个人空间 0
技术积分 915 (2047)
社区积分 16 (8517)
注册日期 2006-4-28
论坛徽章:1
2008北京奥运纪念徽章:自行车     
      

发表于 2008-5-23 10:20 


QUOTE:
原帖由 wabjtam123 于 2008-5-23 08:40 发表


不理解啊,为什么 14*2???又为什么要 14*2 + (18 - 4)

此外,这个X$的视图是统计了RAC的两个节点的总和了吧

他是说每个回滚段都使用两个class#。14个回滚段使用28个,加上18,是46个。中间system undo header,system undo block,undo header,undo block等4行去除。


__________________
某年,空中旅行。观舷窗外,景色灿烂。乃感而留言。   

    扶摇上青天,凌云近日边。
    千光投下界,万色绣山川。
    居高无阴雨,御风任左前。
    层天绝尘境,云何不羡仙。

=====================
===抬起头,看看彩色的世界===
=====================
只看该作者    顶部
离线 yuxuan
每天进步一点点


来自 合肥
精华贴数 0
个人空间 60
技术积分 3558 (413)
社区积分 331 (1775)
注册日期 2001-11-7
论坛徽章:11
数据库板块每日发贴之星生肖徽章2007版:蛇生肖徽章2007版:羊生肖徽章2007版:鼠数据库板块每日发贴之星2008北京奥运纪念徽章:拳击
行业板块每日发贴之星行业板块每日发贴之星数据库板块每日发贴之星行业板块每日发贴之星行业板块每日发贴之星 

发表于 2008-5-23 16:18 
学习


__________________
努力工作,健康生活
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问