晶晶实验七之事务表篇
上一篇 / 下一篇 2008-02-21 17:13:16 / 个人分类:晶晶oracle实验系列
回滚段头中,有一项非常重要的信息,就是事务表。对事务表频繁的访问,可能会造成回滚段头的争用.了解什么样的操作会访问事务表,对于了解回滚段头争用的原因非常重要.下面我们来做一些实验来验证一下,什么样的操作才会访问事务表.ITPUB个人空间6k3@#G`y
首先简单介绍一个视图,备份x$bh.对这个视图我想大家都有一定的了解,bh即buffer header 的简写.在buffer header中有一个TCH 列,表示块被访问的次数.我们通过他来验证事务表什么时候被访问.需要注意的是.TCH列每3秒,才会重新计算一次,3秒之内无论访问某一个块多少次.TCH列只会增加1.
/@6I#Fb [sX0
b/V+f,wL0 在会话A开启一个事务后:ITPUB个人空间/LKXzA/?-q
ITPUB个人空间4v#lBrZs
步骤一:通过v$transaction视图找到XIDITPUB个人空间}Kd4pBp R]9C7{
SQL> select xidusn,ubablk,ubafil from v$transaction;
my6Kpl r?j"]0
)RX{A1iM0 XIDUSN UBABLK UBAFIL
3t}7Bl]8mhs0---------- ---------- ----------
y J%\V c0 13 97 5
@W-L:k/Sk:o|0步骤二:通过回滚段编号,可得知事务所占回滚段名,并用此查找事务头块号,文件号
smZTbzG0o0SQL> select header_block,header_file from dba_segments where segment_name='_SYSSMU13$';
0{a&r bo8hK;btH0
6o'G)v;|a]+A n0HEADER_BLOCK HEADER_FILEITPUB个人空间&p$bL9@5WL$X/X9P/J
------------ -----------
+k5S/Y3vh8?0 41 5ITPUB个人空间2BS{9^Z
T
步骤三:查看x$bh视图中,TCH值的增加.ITPUB个人空间i A.D.g-r5X
SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;
B"x,_l2I
btK3j0ITPUB个人空间 q%P1Y/b*q$c#g
ADDR TCHITPUB个人空间$kj3}!Z]mV/S
-------- ----------ITPUB个人空间Ka7Y1w3D"`
080B5208 41
;KA;~],pI
t,I1J+M0ITPUB个人空间&T7i7yS[7J;a
步骤四:查找完TCH后,马上执行要测试的命令(会话B),
SQL> select * from jj_3;
*i^`D/r,H4X#~0ITPUB个人空间JA8d
E/O0gT:A
ID NAITPUB个人空间v:fS3VxY4Vk~$D
---------- --
O w_z5vQ&h}0 1 aa
k0b,U
Q7P?0 2 aaITPUB个人空间)z$I(a2o*K*}o
3 aaITPUB个人空间4hP/_"?~"k$t s:I]
4 aaITPUB个人空间M~w \d$A
5 CN
l R?8sr7\`+X6ehO6u0步骤五:再次查看x$bh视图
A7[.X8O*H'U {0SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;ITPUB个人空间]zg!pb/`gc
ITPUB个人空间H&n