|
最初由 samchj 发布
[B]13.还是关于consistent read。
a.create as select后增加一个表,然后确定当前存放数据的块20没有读到buffer中来:
SQL> select file#,block#,class#,xnc,status,objd,ts# from v$bh where file#>=3 and block#>16;
FILE# BLOCK# CLASS# XNC STATU OBJD TS#
---------- ---------- ---------- ---------- ----- ---------- ----------
3 17 8 0 xcur 6308 3
3 18 9 0 xcur 6308 3
3 19 4 0 xcur 6308 3
b.起一个sqlplus 执行select,注意这个时候在buffer中有一个块缓存了:
SQL> select file#,block#,class#,xnc,status,objd,ts# from v$bh where file#>=3 and block#>16;
FILE# BLOCK# CLASS# XNC STATU OBJD TS#
---------- ---------- ---------- ---------- ----- ---------- ----------
3 17 8 0 xcur 6308 3
3 18 9 0 xcur 6308 3
3 19 4 0 xcur 6308 3
3 20 1 0 xcur 6308 3
c.在一个session中delete50行没有提交,这是产生一个block buffer:
FILE# BLOCK# CLASS# XNC STATU OBJD TS#
---------- ---------- ---------- ---------- ----- ---------- ----------
3 17 8 0 xcur 6308 3
3 18 9 0 xcur 6308 3
3 19 4 0 xcur 6308 3
3 20 1 0 cr 6308 3
3 20 1 0 xcur 6308 3
[/B]
你这个步骤c ,怎么会产生一个 cr 读那?
delete操作应该是current mode读取,不需要构造cr block
我的测试
session 1删除1条记录 但没有提交
907是block header,908是修改的block
SQL> select file#,block#,class#,xnc,status,objd,ts# from v$bh where file#=9 a
nd block# in (907,908);
FILE# BLOCK# CLASS# XNC STATU OBJD TS#
---------- ---------- ---------- ---------- ----- ---------- ----------
9 907 4 0 xcur 30437 9
9 908 1 0 xcur 30437 9
另外一个session查询该表 发生一致读,908产生一个cr block
SQL> select file#,block#,class#,xnc,status,objd,ts# from v$bh where file#=9 a
nd block# in (907,908);
FILE# BLOCK# CLASS# XNC STATU OBJD TS#
---------- ---------- ---------- ---------- ----- ---------- ----------
9 907 4 0 xcur 30437 9
9 908 1 0 cr 30437 9
9 908 1 0 xcur 30437 9
any advice? |
|