/*******测试下dml事务与数据块的ckptq,fileq,objq的不同变化及相关联系***************/
/**********新增记录的block dump bh***********/
BH (0x000007FF40FF38A8) file#: 5 rdba: 0x0140bc5e (5/48222) class: 1 ba: 0x000007FF40EE8000
set: 3 pool 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 991,28
dbwrid: 0 obj: 72973 objn: 72973 tsn: 5 afn: 5 hint: f
hash: [0x000007FF41F67298,0x000007FF604870E8] lru: [0x000007FF40FF3AC0,0x000007FF40FF3860]
obj-flags: object_ckpt_list
ckptq: [0x000007FF46FA65A8,0x000007FF40FF3B08] fileq: [0x000007FF607C49A8,0x000007FF40FF3B18] objq: [0x000007FF40FF3AE8,0x000007FF40FF3888]
st: XCURRENT md: NULL tch: 2
flags: buffer_dirty redo_since_read
LRBA: [0xc2.841f.0] LSCN: [0x0.5b458d] HSCN: [0x0.5b458d] HSUB: [1]
cr pin refcnt: 0 sh pin refcnt: 0
/********检查点发生***********/
SQL> alter system checkpoint;
System altered
/********检查点后的block bh************/
BH (0x000007FF40FF38A8) file#: 5 rdba: 0x0140bc5e (5/48222) class: 1 ba: 0x000007FF40EE8000
set: 3 pool 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 991,28
dbwrid: 0 obj: 72973 objn: 72973 tsn: 5 afn: 5 hint: f
--ckptq发生了变化,fileq发生了变化
hash: [0x000007FF41F67298,0x000007FF604870E8] lru: [0x000007FF40FF3AC0,0x000007FF40FF3860]
ckptq: [NULL] fileq: [NULL] objq: [0x000007FF40FF3AE8,0x000007FF40FF3888]
st: XCURRENT md: NULL tch: 2
--flags发生了变化
flags: block_written_once redo_since_read
--lrba及lscn发生了变化
LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
cr pin refcnt: 0 sh pin refcnt: 0
/*******发生一个update************/
SQL> update t_cr set a=30;
1 row updated
---基于原来xcurrent产生了一个新的xcurrent
BH (0x000007FF40FF3648) file#: 5 rdba: 0x0140bc5e (5/48222) class: 1 ba: 0x000007FF40EE4000
set: 3 pool 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 991,28
dbwrid: 0 obj: 72973 objn: 72973 tsn: 5 afn: 5 hint: f
hash: [0x000007FF40FF3958,0x000007FF604870E8] lru: [0x000007FF41F92AB0,0x000007FF607C46F0]
obj-flags: object_ckpt_list
ckptq: [0x000007FF607C4908,0x000007FF43FD1538] fileq: [0x000007FF607C49A8,0x000007FF607C49A8] objq: [0x000007FF5C2A33A0,0x000007FF5C2A33A0]
st: XCURRENT md: NULL tch: 1
flags: buffer_dirty block_written_once redo_since_read
LRBA: [0xc2.8480.0] LSCN: [0x0.5b473d] HSCN: [0x0.5b473d] HSUB: [1]
cr pin refcnt: 0 sh pin refcnt: 0
---这里说明原来的xcurrent变成了cr
BH (0x000007FF40FF38A8) file#: 5 rdba: 0x0140bc5e (5/48222) class: 1 ba: 0x000007FF40EE8000
set: 3 pool 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 991,28
dbwrid: 0 obj: 72973 objn: 72973 tsn: 5 afn: 5 hint: f
hash: [0x000007FF41F67298,0x000007FF40FF36F8] lru: [0x000007FF607C46F0,0x000007FF41F66BB0]
lru-flags: moved_to_tail
ckptq: [NULL] fileq: [NULL] objq: [NULL]
st: CR md: NULL tch: 1
cr: [scn: 0x0.5b473c],[xid: 0x0.0.0],[uba: 0x0.0.0],[cls: 0x0.5b473c],[sfl: 0x0],[lc: 0x0.5b458d]
flags: block_written_once redo_since_read
cr pin refcnt: 0 sh pin refcnt: 0
小结:1,如果连续发生dml操作,oracle会基于原来的xcurrent构建一个新的xcurrent,但把原来的xcurrent变成cr
2,每次发生dml,数据块block中的bh的fileq,ckptq,objq会发生变化
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-758889/ ,如需转载,请注明出处,否则将追究法律责任。