oracle block資料塊結構續(二)之dml_ckptq_fileq_objq

wisdomone1發表於2013-04-19

/*******測試下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部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-758889/,如需轉載,請註明出處,否則將追究法律責任。

相關文章