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的源话