|
本帖最后由 wei-xh 于 2013-7-11 10:07 编辑
不好意思,估计是系统BUG,第一次发的始终看不到,就又写了一次。
现在可以看到了。
下面的忽略,请看上一帖。
buffer pin一定是有队列的,只是不知道是不是FIFO的
buffer pin 不是latch,不是mutxt,它不会去自旋spin,一旦获取不了资源,就加入队列。
证明有这个队列的办法很容易。
select dbms_rowid.ROWID_RELATIVE_FNO(rowid) fn, dbms_rowid.rowid_block_number(rowid) bl, wxh_tbd.object_id,rowid from wxh_tbd where rownum<4;
FN BL OBJECT_ID ROWID
---------- ---------- ---------- ------------------
7 906227 20 AAAF2kAAHAADdPzAAA
7 906227 46 AAAF2kAAHAADdPzAAB
7 906227 28 AAAF2kAAHAADdPzAAC
新开3个SESSION :
test@DLSP>begin
2 for i in 1 ..40000000 loop
3 UPDATE wxh_tbd SET object_name=28 where rowid='AAAF2kAAHAADdPzAAC';
4 commit;
5 end loop;
6 end;
7 /
test@DLSP>begin
2 for i in 1 ..40000000 loop
3 UPDATE wxh_tbd SET object_name=20 where rowid='AAAF2kAAHAADdPzAAA';
4 commit;
5 end loop;
6 end;
7 /
test@DLSP>begin
2 for i in 1 ..40000000 loop
3 UPDATE wxh_tbd SET object_name=46 where rowid='AAAF2kAAHAADdPzAAB';
4 commit;
5 end loop;
6 end;
7 /
alter system dump datafile 7 block 906227;
这个操作执行N次。可能一次或捕获不到。
我们再看看跟踪文件。
BH (0xa37d8c9b8) file#: 7 rdba: 0x01cdd3f3 (7/906227) class: 1 ba: 0xa33c7e000
set: 182 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,0
dbwrid: 1 obj: 23972 objn: 23972 tsn: 4 afn: 7 hint: f
hash: [0xa37d8c5a8,0xadfdd5188] lru: [0xa37d8c5e0,0xae63edb58]
ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
use: [0xae5f89658,0xae5f89658] wait: [NULL] fast-cr-pins: 1 st: CR md: SHR tch: 0
cr: [scn: 0x0.8a4a8801],[xid: 0x0.0.0],[uba: 0x0.0.0],[cls: 0x0.8a4a8801],[sfl: 0x0],[lc: 0x0.8a4a8801]
flags: only_sequential_access
BH (0x9f7ebfa68) file#: 7 rdba: 0x01cdd3f3 (7/906227) class: 1 ba: 0x9f5cd0000
set: 184 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,0
dbwrid: 3 obj: 23972 objn: 23972 tsn: 4 afn: 7 hint: f
hash: [0x9ffea3908,0xadfdd5188] lru: [0x9f7ebf0a0,0x9f7ebef70]
obj-flags: object_ckpt_list
ckptq: [0x9f7ebee88,0x9f7ebf0e8] fileq: [0xae64a4100,0xae64a4100] objq: [0xab46b0220,0xab46b0220] objaq: [0xab46b0200,0xab46b0200]
use: [0xae5f89658,0xae5f89658] wait: [0xaf5ef8e28,0xaf5ef8e28] st: XCURRENT md: EXCL fpin: 'kdswh11: kdst_fetch' tch: 7
flags: buffer_dirty mod_started block_written_once redo_since_read
flush_after_writing
change state: COMPLETE
change count: 1
LRBA: [0x44d.49bdc.0] LSCN: [0x0.8ad148b0] HSCN: [0x0.8ada8c13] HSUB: [2]
BH (0xa37db0618) file#: 7 rdba: 0x01cdd3f3 (7/906227) class: 1 ba: 0xa34042000
set: 184 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,0
dbwrid: 3 obj: 23972 objn: 23972 tsn: 4 afn: 7 hint: f
hash: [0xadfdd5188,0xadfdd5188] lru: [0xa37db0830,0xa37db05d0]
ckptq: [NULL] fileq: [NULL] objq: [0xab46b0210,0xa37db05f8] objaq: [0xab46b0200,0xa37db0608]
st: XCURRENT md: NULL fpin: 'kdswh11: kdst_fetch' tch: 85
flags: only_sequential_access
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
Block dump from disk:
标红的部分就是队列。
有时候会有use队列,有时候use wait队列。
有时候你人品不好,没抓到,就什么队列都没有。
|
|