ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle block数据块结构续(二)之dml_ckptq_fileq_objq

oracle block数据块结构续(二)之dml_ckptq_fileq_objq

原创 Linux操作系统 作者:wisdomone1 时间:2013-04-19 16:44:07 0 删除 编辑

/*******测试下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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12685617