没有必胜的秘籍,没有方程式遵循~~ 要赢~~只有全身心的投入!

晶晶实验七之事务表篇

上一篇 / 下一篇  2008-02-21 17:13:16 / 个人分类:晶晶oracle实验系列

查看( 1179 ) / 评论( 41 )

回滚段头中,有一项非常重要的信息,就是事务表。对事务表频繁的访问,可能会造成回滚段头的争用.了解什么样的操作会访问事务表,对于了解回滚段头争用的原因非常重要.下面我们来做一些实验来验证一下,什么样的操作才会访问事务表.ITPUB个人空间6k3@#G` y
    首先简单介绍一个视图,备份x$bh.对这个视图我想大家都有一定的了解,bh即buffer header 的简写.在buffer  header中有一个TCH 列,表示块被访问的次数.我们通过他来验证事务表什么时候被访问.需要注意的是.TCH列每3秒,才会重新计算一次,3秒之内无论访问某一个块多少次.TCH列只会增加1.
/@6I#Fb[s X0
b/V+f,w L0  在会话A开启一个事务后:ITPUB个人空间/LKXzA/?-q
ITPUB个人空间4v#lBrZs
步骤一:通过v$transaction视图找到XIDITPUB个人空间}Kd4pBpR]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个人空间iA.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/O0g T: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
lR?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&nh WJ0}'j%p$d
ADDR            TCH
3Z.eWm'vg)F5f+F0-------- ----------ITPUB个人空间X)J"S w;[k LA
080B5208         42ITPUB个人空间)I3O @$UaLB.k#a.@
注意:步骤三四五应尽快完成.避免oracle的其他内部操作影响测试结果.(因为oracle内部的操作也会造成回滚段头的tch值增加,特别在10G中,这种情况更为明显,不过我没有跟踪是什么oracle的内部操作造成的)ITPUB个人空间%W v5i.}_\

:}K;m7_ Dw/by:]0    小结:从结果集来看,在另一会话中访问未提交数据的select语句会访问事务表,那么其他的DML操作呢?(希望大家也都试试,我的结果是都会增加TCH值).上面我的步骤四是全表扫描.
1o |I$C$Lw d.I`0    如果我的表有两个块,分别是块一块二,在块一中修改行A,按照rowid访问块一中的行B,这样会访问事务表吗?如果ITPUB个人空间[%G Qa`,U

`Q@&w-}km+yb1^ j0按照rowid访问块二中的行,会访问事务表吗?下面我来实验下看结果是什么:
/z~H3xQL4C0
;N4[d4Xy&oZ.\k0步一:利用函数查看该表的块号.ITPUB个人空间Bk _QG GW6\
SQL> select rowid,dbms_rowid.rowid_block_number(rowid) from jj_3;
7f6}V|vgz1K0
0[ _sI T3dV)n)k0ROWID              DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)ITPUB个人空间4f2G-\:ss:X
------------------ ------------------------------------ITPUB个人空间J3zJ,o([1f9o
AAAMvjAAKAAAAEdAAA                                  285ITPUB个人空间#C?T9b'bV'sh
AAAMvjAAKAAAAEdAAB                                  285ITPUB个人空间|5n@kaFU}t3_
AAAMvjAAKAAAAEdAAC                                  285
)b}V s+Ng(kv0AAAMvjAAKAAAAEeAAA                                  286ITPUB个人空间:Bv$s/R1G(@BF
ITPUB个人空间%I,a [-G?A
步二: 在B会话中通过AAAMvjAAKAAAAEdAAC修改表.ITPUB个人空间{m[+uh.i(j3l*NhP
SQL> update jj_3 set id=10 where rowid='AAAMvjAAKAAAAEdAAC';
ph~ XyQ _`0L D0ITPUB个人空间:fb)VH6t6J
已更新 1 行。

步三: 在A会话中通过AAAMvjAAKAAAAEdAAA查看行
/{c-X!m4lL0SQL> select * from jj_3 where rowid='AAAMvjAAKAAAAEdAAA';ITPUB个人空间9Kb#RA%x8^)g
ITPUB个人空间;gB@7]|$c%@$fH
        ID NAITPUB个人空间1x*z `@2]0B$O
---------- --ITPUB个人空间-n&W,KS.i
         4 aa
)c jf/j.B{OS0
k V[ZX0n9Tdr)E!k0
Z!FkTUz0ITPUB个人空间 n(f U)CQ
在做步一和二之前,先查看一下X$BH,因为他会因为oracle的内部操作而增加,ITPUB个人空间oA5N j7}AZ
ITPUB个人空间%v{n,OsLE5LD
实验前查看结果:
,M,`q6{sP5E.S-T!P"P0SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;ITPUB个人空间 ~T}l D;|#{&x4E

Vtx$J7m(]gR0ADDR            TCH
w%w6X'E.u W2y0-------- ----------ITPUB个人空间.G%i!}:i#@.y&D
080B51BC         63ITPUB个人空间W(jY2J.S Y$e
实验后查看结果:
b#K9kJ9f0SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;ITPUB个人空间 d2Xgp1n W`$P

p4a(a_ L3wl,x%dk x0ADDR            TCH
.Mn_O3C,o0-------- ----------ITPUB个人空间qEy%dG_dl:@,CI h
080B51BC         64
,q\1M"JH-S(g0  结论一:在块一中修改行A,按照rowid访问块一中的行B,这样会访问事务表;再试试不同的块ITPUB个人空间z tMf nL"s
操作前先查看下X$BH:
/n"x)mlX0SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;
QR/J\k.m%U\N6E0ITPUB个人空间 eM%|[1Z/t5I
ADDR            TCH
Hut3t&fr_0-------- ----------ITPUB个人空间H.m,]H \ ug*j,D
080B51BC         67ITPUB个人空间 r)b5R/cnZx]}b
ITPUB个人空间d4_Ixo*J
接着刚才的实验,我又访问了不同的块:ITPUB个人空间+t2GZkYuyA K
SQL> select * from jj_3 where rowid='AAAMvjAAKAAAAEeAAA';
b/?j$D Y }0ITPUB个人空间.Fzw,D;Vv$P
        ID NAITPUB个人空间D0k6[XZ-m
---------- --ITPUB个人空间1ZA R.ZSz
         4 aa
B!j6c!cH#[d0再次查看X$BH的结果是:
(U5h }4F^zee+D }0SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;ITPUB个人空间.N~Ai+P!?4I

DG^3Q2?T,O dx;joB)N6S0ADDR            TCHITPUB个人空间R2n xuZ1V.Y
-------- ----------ITPUB个人空间 nB+J1E vAhg
080B51BC         67
(^:F[)T:P Lfas0结果很明显了,用rowid访问不同的块,是不会增加TCH值的.也就是说不会有CR块产生.
%b7Ta3PnANH&O+T0ITPUB个人空间#N&g dm,G"\_i
在晶晶实验六中,已经证明了在生成CR块时,oracle可以根据数据块头部的ITL槽中的UBA,找到存放数据块回滚信息的回
r0NxjNvE0
(l1l?7Y;e/\(k0滚块和回滚记录,通过这个UBA就可以构造CR块咯,oracle为什么还要再去访问事务表呢?这是因为,oracle的提交有时会
!m5wUXr.um0
/qOaf x1S*Ve.\Q/F0是延迟提交.oracle并不清除延迟提交所涉及的块中的事务信息,如:事务所占ITL槽和行锁.而把清除事务信息这个操作ITPUB个人空间9v4`HB Arxqd
ITPUB个人空间6a)o]/@$`%~$p
放到了以后的块清除中(块清除在以后的实验会详细讲述),oracle这样做的目的是为加快提交速度.如果一个事务涉及
a.EYj"H/V~]0
P:T9|iG:K0到了过多的块,单单是提交时清除每个块中的事务信息就需要耗费很长时间.这降低了提交速度.有可能使提交成为最易
,?p8W^0C9O!|.E0ITPUB个人空间%{zB%}hX#V|
引起争用的操作.当事务提交时,对事务所涉及的块,不做任何操作,块将保持事务仍在持续时的信息.当一个select操作
_.s Us9?(V GD0ITPUB个人空间qA q4|O
查询到这个块时,ITL槽中的提交标志为未提交,但实际上这个事务是已经提交的.就是因为有了延迟提交oracle无法根
.Y6E){D r+p/l0
9q8] ` s^_0据ITL槽中的提交标志来判断一个块中的事务是否真的提交.他必须根据ITL中的XID 去访问事务表.才能确定此块中的ITPUB个人空间'xw"E0[@!U!{2f
ITPUB个人空间]0h5L6Ox1b
事务是否真的提交.在生成CR块前,oracle先要判断是否真的有必要为此块生成CR块.这就要去访问事务表.


TAG:

catchwo的个人空间 catchwo 发布于2008-02-21 17:15:49
一个字 猛!
Alienovo的个人空间 Alienovo 发布于2008-02-21 17:17:38
支持原创!
蒙昭良的个人空间 mengzhaoliang 发布于2008-02-21 17:23:43
楼主越来越强了!
shiri512003发布于2008-02-21 17:30:32
不错ITPUB个人空间wLh8N,H.o
支持!!!
/h"Z'{oB$q za7pp期待更多精彩。。。
蚊子窝 foxmile 发布于2008-02-21 17:32:13
做跑车前进的mm
magic007的Oracle空间 magic007 发布于2008-02-21 17:56:04
强啊。
bluemoon0083发布于2008-02-21 17:59:35
又是晶晶mm的力作,顶一个
SingleLove的个人空间 SingleLove 发布于2008-02-21 18:39:19
不得不顶啊。。
OoNiceDream发布于2008-02-21 20:15:18

QUOTE:

原帖由 foxmile 于 2008-2-21 17:32 发表 ITPUB个人空间S#LXW2~4B
做跑车前进的mm
!ib ad,@i+TG*Cspace.itpub.net估计是做飞机的前进的
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-21 22:12:55
哈哈,俺最喜欢敞棚甲克虫咯,努力加油ing,争取尽快拥有它
nw5452的个人空间 nw5452 发布于2008-02-21 22:16:16
支持,晶晶想当精华贴大师?
llmzealot发布于2008-02-21 22:22:20
强就一个字啊
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-21 23:21:31

QUOTE:

原帖由 nw5452 于 2008-2-21 22:16 发表
@+c
y)u)Q$FP3\9[
支持,晶晶想当精华贴大师?
D{;~7TJ
_2aE{7EiI

space.itpub.net%QpWx]E~
w


uC[0p
?_yc
哈哈 多谢各位的大力支持,才能有今天的晶晶小妹$BW9s$t)R,q!b}
space.itpub.netf iPL1d,S1]]+S`x(D
(双手摆弄衣角..低头窃喜ing...)
eagle3250发布于2008-02-21 23:26:10
MM还在奋斗呀,你不是一个人哦...
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-21 23:39:57

QUOTE:

原帖由 eagle3250 于 2008-2-21 23:26 发表
,d*S \4Mj8Q;vspace.itpub.netMM还在奋斗呀,你不是一个人哦...
'X}8wQ m@2b
ITPUB个人空间/F$^,E:j,h'A}\'H

3UL}X`"jL$MITPUB个人空间我不是人??那我是什么??
eagle3250发布于2008-02-22 00:03:01

QUOTE:

原帖由 晶晶小妹 于 2008-2-21 23:39 发表
$\8^ x,aWoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netspace.itpub.netn1Q4HT.uw%[

$`a3E,P:R.XKseoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net"Bb(JQm
我不是人??那我是什么??
6R3n0ZD;lQ"YITPUB个人空间MM就别笑偶了,偶在站岗也
lcmlsj的个人空间 lcmlsj 发布于2008-02-22 08:25:14
系统中回滚段很少, 而并发事务很高,会造成多个事务对段头的竞争。
haorman zuohao_lu 发布于2008-02-22 08:35:07
好生佩服..
烟囱的个人空间 烟囱 发布于2008-02-22 08:43:31
晶晶的话题都是高深的话题,佩服.
bartfj的个人空间 bartfj 发布于2008-02-22 09:28:23
偶像啊
weilaiyxj发布于2008-02-22 09:43:01
晶晶mm是厚积薄发啊
wangfans的个人空间 wangfans 发布于2008-02-22 10:54:05
顶下
carcase发布于2008-02-22 11:20:26
建议 版主给 晶晶姑娘 做个晶晶 系列 置顶一下,做为鼓励。
5S5E-_7B&^
U
itpub现在 就需要这么的新鲜血液 来带动itpub的气氛啊!!
gclizh发布于2008-02-22 15:48:53
我测试的有什么问题 ?space.itpub.net&]f|(dy2VT;o!_9_.g
session 1:
-P,b m1G*bxFvEs.NITPUB个人空间LIZH@ORCL>create table t1(a int); W!RF6Zwhhm5K.M:a
I"s!_8i4S0B7N$I;|
Table created.space.itpub.netKi2XR^B
S%y-pkJql*Y        {@
LIZH@ORCL>insert into t1 values(1);space.itpub.net[ |U4r
] v0V

space.itpub.net1Z'YH qJZE`q
1 row created.
vVe4LpP
x        S#n-Os9C7ILIZH@ORCL>commit;)^+Sx#z2Z-J


[\5_+T&j;L]space.itpub.net
Commit complete.space.itpub.net(_(tk6e9SF+ASh
space.itpub.net[eY!F        Xw\C&MX
LIZH@ORCL>update t1 set a=a ;  
J@:npc6`,i
0pMP7U4Loracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net1 row updated.m[UO4TpI4jn

~8a8X/ct/s
h
LIZH@ORCL>
y,v"D6_P X Kspace.itpub.netsession 2:space.itpub.net:CI:],|R8`
SYS@ORCL>col header_file new_value hforacle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net'nO3v        Z        E.]~`
col header_block new_value hboracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netLq_,pi
f)q$Z

select/*+leading(t e s)*/ s.header_file,s.header_block
(}h^/_GITPUB个人空间  from dba_undo_extents e, dba_segments s, v$transaction t
4{ e&L)C
O0v
where e.segment_name = s.segment_nameITPUB个人空间t8[*rU
V!V

   and t.UBABLK >= e.block_id} i/w~'ls
   and t.UBABLK <= e.block_id + e.blocks;%tv!N
p'R7C/id,}

select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;space.itpub.netBzZ%|7H        t/yt
select count(*) from lizh.t1;
,V e-S Iz        \        e9boracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netselect addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;v!_/_9s-Z
select count(*) from lizh.t1;
#Fl#M4}y"]qoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netselect addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.nete?'J:@-]
CV6E N;w

select count(*) from lizh.t1;
s:p'NwsGgq`3[select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;
6N
]VI0wM-Q oXspace.itpub.net
select count(*) from lizh.t1;ITPUB个人空间H3\xl$D|c5w(WF
select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;ws*GG,j
t

select count(*) from lizh.t1;
j;IJ#Og3T}select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;Lwx!cVy+M*q
select count(*) from lizh.t1;9ewM)ABMR&TJ4S
select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netnw
ld W&g
u%_*RlY

select count(*) from lizh.t1;oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netc2l gX'dr
select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netRUm6t*A        [b$d d{
select count(*) from lizh.t1;v\(Sh"JZ`GU)t
select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb;space.itpub.net#of%Yv}$Xw&R
oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
m
z3PJx|


L,yX$_ ~%i!koracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netSYS@ORCL>SYS@ORCL>  2    3    4    5  ITPUB个人空间`ZsX6~
HEADER_FILE HEADER_BLOCK
y\Zs!Lq7eITPUB个人空间----------- ------------ITPUB个人空间$eU-S{%H vJ3l1i
          3          105space.itpub.net"dy w
S~        S

space.itpub.net%z}
ORm#t

SYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hbspace.itpub.net
e"f7Pf9h:m9f a

new   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       1053G\/Dw$pDLmd#o
^j9Jb9ma"bG
ADDR            TCH
        ]{\
R+d`,U ~space.itpub.net
-------- ----------
;he!}Mt!~0047FF24         22
]"ATI9ch
ddspace.itpub.net

:p;@(_f*r1M5D-a]1FSYS@ORCL>oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netD^P0D b:s
  COUNT(*)space.itpub.net2Xpmp(\0rc
----------_3W#pyfb;u
Z

         1oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netb        nH|.ez3S

6p"H9ZP
YY'j'\
SYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb`3\i6z1M
fi

new   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       105space.itpub.net.z'A8v*_R&xHj
MZ


Ks{g)_#SY$HITPUB个人空间ADDR            TCH
)v6D%hh,C/?1N Nq6m-------- ----------
|.em+|@.^$g%U0l }oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net0047FF24         22oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
d%q
Ho(u5sw

ITPUB个人空间W-FuZ
W
aYo_

SYS@ORCL>
b6Vw~r+J&oN6HITPUB个人空间  COUNT(*)space.itpub.netb.o7H]/}mh3m+Lr P
----------&L9?M;X;Vo Dt(K+gvb K
         1
+R!{[S&row'Qspace.itpub.net/tQ)]3Hc.Q
a|(G#\

SYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb
{3ym\5v6K:Sq*Vnew   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       105space.itpub.neto:~i3i@6OEH
I

G
XHjE:{

ADDR            TCHoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net9o*?d)Q^)wm2O
-------- ----------ITPUB个人空间+K*b]3r0v'Z
0047FF24         22
P(@ _L _X$K$Loracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
TSkOc*n1Q?cSYS@ORCL>
G5q3D(a-k K~f  COUNT(*)
Zk*p6L/d!u4C----------
){S*I'n9Y q        ?oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net         1ITPUB个人空间o,rE
`NUc


vi
e1wU%|!pforacle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
SYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb5EA^ s7E5D$\'f{K
new   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       105
*k        D&jl?%],`
"K7_eeOspace.itpub.netADDR            TCH
!z
WiU}3poracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
-------- ----------
Gf um3GpE8ZITPUB个人空间0047FF24         22
f/|0rm?ITPUB个人空间
        TK-s v,fSYS@ORCL>N E$R9aW4c
  COUNT(*)oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.neto2~F&zy
----------oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netp ZDGX_,n
         1ITPUB个人空间v1@U2W,@

4Kk
vPUG`"l NITPUB个人空间
SYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb`uF        H'Pt
new   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       105oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.neth        I9ymJ@

)ca]0R*{g;Bspace.itpub.netADDR            TCH        g7ToVL
-------- ----------}6mxCX7lB
0047FF24         22space.itpub.net{H!j5}lE
|s"Uj0\-R9xE
SYS@ORCL>space.itpub.net?2@%E a
x&o;?+?

  COUNT(*)
&N
wJ:S;_J&Sspace.itpub.net
----------
r1X1D!a*h%Ez Ii
@?%^space.itpub.net
         1,\n        k#dy*g+v m8C
ITPUB个人空间5]
Y$gC8RD

SYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb(p;Pqz)[2@ f9d
f1}-u0[?

new   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       105oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net4pCX+V$aG

@,[!U4l1\ZrADDR            TCHspace.itpub.net.]1~
`j1\lc
hG{$A9X

-------- ----------B-C2MI+rD|
0047FF24         22v*_2aA5B
_


6PN!d%k
m+|oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
SYS@ORCL>
u"ta"x4M  COUNT(*)space.itpub.net9ml        e,M;P
----------oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netr9kWCx
         1
dvkq6[+G#g!lZ5`
(F/uE5i;D8anlITPUB个人空间SYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hbspace.itpub.net
F&~2Tq"yT;d

new   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       105
2ftKxYjH#Ou%i_ RD l3??yf
t

ADDR            TCHN7@4xIj!M,DD\i
-------- ----------oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net0K&?C Rn6H$Z9@w'@b
0047FF24         22
/Of^n_b+[8]g"fh
qq

SYS@ORCL>
"RW#wtD9_j0W  COUNT(*)
@:A}}H ixITPUB个人空间----------
\:PU`M!N `         1ITPUB个人空间"`y^h%n&Uh

8BWg#Jr2gSYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb

l
V msq:goracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
new   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       105oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net N'h"zJnb!G        U0P
IM-q7M8Ix2e
ADDR            TCH/f){\}#_2DP)p,h{
-------- ----------
9^q+N$Z)_3Ra0047FF24         22
!uv0w(U~
[,jS/[I][A.u
lBY
SYS@ORCL>space.itpub.net6h[ x.tu        v6P(s
  COUNT(*)
!p&Ed:f2PjJQspace.itpub.net----------xKa.O$C
x4?.NH

         1oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net!GN![2|?i#MNp
+N/f4ZrD$LVL"U3U
SYS@ORCL>old   1: select addr,tch from x$bh where dbarfil=&hf and dbablk=&hb0Q1^r}"kl
new   1: select addr,tch from x$bh where dbarfil=         3 and dbablk=       105H*g$J`\"A

]B[U)dG{PN|ADDR            TCH IO)vnb'jS&U HV
-------- ----------
-n-dFd:U H0047FF24         22
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-22 22:07:48
对T1表的更新和查询 不应该在一个会话. 如果在一个会话中更新 然后查询是不会访问事务表的
yudingchu的个人空间 yudingchu 发布于2008-02-22 23:41:55
支持MM
gclizh发布于2008-02-23 22:23:34

QUOTE:

原帖由 晶晶小妹 于 2008-2-22 22:07 发表
\3l9U GP5O rd3Y
zITPUB个人空间
对T1表的更新和查询 不应该在一个会话. 如果在一个会话中更新 然后查询是不会访问事务表的
B;L
wo,|kzp

我是在两个session 中的. 里面写了
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-23 23:57:32

QUOTE:

原帖由 gclizh 于 2008-2-23 22:23 发表 oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netg0eG#z,RA

fJg"q*d7\mMspace.itpub.net我是在两个session 中的. 里面写了
PZ3T#_Z

.u;X)_/W(@!ES7V
i
space.itpub.nets"v;g"b$}}
哦,不好意思,没看到。
0rz)r0dw F(n Is&q8K"j(C
select/*+leading(t e s)*/       e.segment_name, e.tablespace_name    , s.header_file,s.header_blockoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net!j
@:`_$a

  from dba_undo_extents e, dba_segments s, v$transaction t
[SYN        _]space.itpub.netwhere e.segment_name = s.segment_namespace.itpub.net^
K)P0Z,M

   and t.UBABLK >= e.block_id
+Zm+oZ@-O,a   and t.UBABLK <= e.block_id + e.blocks;*zg GV9QzN/j
space.itpub.netKfQA1ra;[
我在你的查询中加了两列,这样你就能看到问题了吧。nh`#lV2bX"\8x

3spD0h ?.y5zoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net如果还不行,再讨论。
ZALBB的个人空间 ZALBB 发布于2008-02-24 00:33:48
文章还是有些地方没交代清楚:ITPUB个人空间Zw;P/?/W1v#W3I XF

(xHhB!x&r4iITPUB个人空间1 注意:步骤三四五应尽快完成.避免oracle的其他内部操作影响测试结果.
%mW2lH7O7p y aoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net问:为什么这么说?
)B8M~.E&D
m[+? bk$k y5Moracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net*cK ?hD3X
1  小结:从结果集来看,在另一会话中访问未提交数据的select语句会访问事务表
]9ty4jl@:kMk问:那里操作:未提交数据?ITPUB个人空间9\
h?5bw1a

问2:为什么得到这样的结论?
zALg/^        mV^ITPUB个人空间
O L$h
`        {7H%}oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
2  注释和操作的语句不一致.V2m&t:{d9K`"h

r
y'o3O1Y aAo!a
步二: 在A会话中通过AAAMvjAAKAAAAEdAAA修改行 -- 这是查看,不是修改.
h[B
n,kmspace.itpub.net
SQL> select * from jj_3 where rowid='AAAMvjAAKAAAAEdAAA';"~#YA&C#n7x

I](P9zL~        ID NA
W;uS+]O+y6Jspace.itpub.net---------- --
B
rRk;~
rFspace.itpub.net
         4 aaITPUB个人空间 L}
\`({ Z


W-A1r-gF
_e"z
~ QYspace.itpub.net
步三: 在B会话中通过AAAMvjAAKAAAAEeAAA查看表.  -- 这是修改,不是很查看.u        Y H [t:Mc1}q
SQL> update jj_3 set id=10 where rowid='AAAMvjAAKAAAAEdAAC';.Bfa.Y%`z5EE
oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
FK/k#V8U#ii

已更新 1 行。
f#VCq6Um@ITPUB个人空间;L/x9{ e(U7W'Ta

4J?IJ}I#wjoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net3 实验前查看结果:!PXQ4d:D*Y
SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;4NG'F
|g K

'\,oiLZt'R*gs.y*y
ADDR            TCH
6{`y9D}i#Y M Q)TVspace.itpub.net-------- ----------
(P@T@qn9N#u8w.[oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net080B51BC         63

_A-hX.{.XQ'm
实验后查看结果:6Iln        J~3LEj        to
SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;
#KM%s} o
JM
ITPUB个人空间(|zH2Jr\2K9}
ADDR            TCH
VPK(e
j(lVspace.itpub.net
-------- ----------space.itpub.net] ghDB
080B51BC         64space.itpub.net1x_c0a\N}Y%|;A
space.itpub.net-P/[#t2D%C J
e\

你这么知道该事物就是使用_SYSSMU13$?oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net$a!@#{3R3h!a

V#K?*q8CPITPUB个人空间
$pY/yX-Fxr*E继续:1`OF ONIY5}Vv(G
结论一:在块一中修改行A,按照rowid访问块一中的行B,这样不会访问事务表;tp.ix wf*{-j;n

.]%B(Dm!W Sspace.itpub.net我看不明白这个结论如何得来的;若以TCH值是否增大来判断是否访问事务表,那应该得出相反的结论:^&uj!CCG)}
步2修改表,步3查看表,然后实验前后比较:发现TCH 值增1了,这应该说明访问了事务表.l _%Xw9`B#Ibf2\

&t8h_W0]C!lKFL&VgSqm#]
实际上步2,步3使用了不同的ROWID.使得问题说明起来已经乱了.
p!\JT6PuL(bITPUB个人空间不知楼主发表前有否仔细阅读过.
晶晶小妹的个人空间 晶晶小妹 发布于2008-02-24 01:32:33
问题1:因为oracle内部操作也会造成TCH增加;(我没有跟踪到底是什么操作,有时不做任何操作回滚段头的TCH也会自己增加),所以要尽量快点查看.
N        J;L"oi{y3w@问题2:A会话中的未提交数据,用B会话来查看它,会增加事务表的查看次数。如:一个块如果有3行,在A会话中如果修改行1,在B会话查看任一行或修改任一行,都会增加事务表的访问次数。y"a] _Z:{t

S-Y m `%G e"V2~问题3:注释和操作不一致,我十分抱歉,是因为实验和注释没同步的关系,因为实验做过多次,所以先把注释输入进文本又加上的实验步骤。在这里向大家说声对不起了。我以后会更加注意的。I am so sorry.
m/l,J+Fx@~
yuI3\H8WA2d9A'q还有我是如何知道 回滚段的名字是 '_sysmu13$',space.itpub.net}sVn-?.VW5T
ITPUB个人空间(?#_6x2~*V;c&O
在步骤一:通过v$transaction视图找到XIDz"}e        bhI{
u8x!h{

SQL> select xidusn,ubablk,ubafil from v$transaction;rVX{J9q
,~)}7xv5x5c
c

    XIDUSN     UBABLK     UBAFIL
4qM$F#l$_ ~---------- ---------- ----------
(d2z7T        MXd[4Espace.itpub.net        13         97          5?y        qHcce#d!{+S
我在这个实验里,是拿13和回滚段名字的一般规则组合的.如果你不记得规则的话可以查看
Mi4TQ}Ndv$rollname视图.
x&kk7i4]H
FhG8rNP3L!PG&_oracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net我会注意这点的,在以后的实验中我会更详细的把步骤贴清楚并且更仔细的核对.
J(S4L`9[Fy Sc;ospace.itpub.net
Z
K+\ hERa!}IW
结论一:在块一中修改行A,按照rowid访问块一中的行B,这样会访问事务表;
x%uS"EC$X1in }s
5n/Z~?9M}V n1f       我多打了一个字...而且是个至关重要的'不'字. 使的结论完全相反咯...万分抱歉;
"b]s
u3O
U'E2roracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.net
最后一个:使用了不同的rowid是为了访问不同的块,看看是否增加.ITPUB个人空间Sm'rKJfrg
+r\[A(@
y*x

最后再次向大家致以万分的抱歉.都是我的疏忽.我以后一定好好核对后再发表.
3~1Ec:{Ap7DLoracle,db2,sqlserver,sybase,mysql,erp,scm,sap,java,.netITPUB个人空间 im CC0i)y)d,J y&p8U

G]c
myp
在这里,多谢ZALBB认真的查看了我的实验,感谢您的支持,更谢你的意见.pc[ H$oC;v7}7L;q
我会更努力的,希望您仍然会支持我.
;fO,Hyi yspace.itpub.netDk ]!e&?
[ 本帖最后由 晶晶小妹 于 2008-2-24 01:46 编辑 ]
我来说两句

(可选)

日历

« 2008-09-06  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 31803
  • 日志数: 31
  • 图片数: 4
  • 建立时间: 2008-02-15
  • 更新时间: 2008-05-29

RSS订阅

Open Toolbar