为什么对数据块修改的change的scn会小于对undo块的修改?!

本帖最后由 mlx_861201 于 2013-5-8 06:32 编辑

大家好!
     我有个疑惑。测试环境是oracle11G

1、对一条数据做upate操作。
2、dump current 日志文件。
3、根据obj找到日志信息。
疑问:
      1、 为什么对数据块修改的change的scn会小于对undo块的修改?!
    2、对数据块的修改为什么不是“OP:11.5”而是“OP:11.19”
日志信息如下:
REDO RECORD - Thread:1 RBA: 0x000085.0000003a.0010 LEN: 0x01e4 VLD: 0x0d
SCN: 0x0000.003d5264 SUBSCN:  1 03/17/2013 16:24:29
<!--对数据块的修改产生的CHANGE--&gt
CHANGE #1 TYP:0 CLS:1 AFN:4 DBA:0x01000226 OBJ:76014 SCN:0x0000.003d51ee SEQ:1 OP:11.19 ENC:0 RBL:0
KTB Redo 
op: 0x01  ver: 0x01  
compat bit: 4 (post-11) padding: 1
op: F  xid:  0x0009.000.000012b6    uba: 0x00c002a4.0231.05
Array Update of 1 rows: 
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 1 ckix: 191
ncol: 3 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x01000226  hdba: 0x01000222
itli: 1  ispac: 0  maxfr: 4858
vect = 4
col  1: [ 2]  c1 4e <!--保存修改后的数据 >

<!--对undo段头块修改从产生的CHANGE--&gt 
CHANGE #2 TYP:0 CLS:33 AFN:3 DBA:0x00c00100 OBJ:4294967295 SCN:0x0000.003d5220 SEQ:2 OP:5.2 ENC:0 RBL:0
ktudh redo: slt: 0x0000 sqn: 0x000012b6 flg: 0x0012 siz: 184 fbi: 0
            uba: 0x00c002a4.0231.05    pxid:  0x0000.000.00000000
<!--对undo块修改产生的CHANGE--&gt
CHANGE #3 TYP:0 CLS:34 AFN:3 DBA:0x00c002a4 OBJ:4294967295 SCN:0x0000.003d5220 SEQ:1 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 184 spc: 7674 flg: 0x0012 seq: 0x0231 rec: 0x05
            xid:  0x0009.000.000012b6  
ktubl redo: slt: 0 rci: 0 opc: 11.1 [objn: 76014 objd: 76014 tsn: 4]
Undo type:  Regular undo        Begin trans    Last buffer split:  No 
Temp Object:  No 
Tablespace Undo:  No 
             0x00000000  prev ctl uba: 0x00c002a4.0231.04 
prev ctl max cmt scn:  0x0000.003d006c  prev tx cmt scn:  0x0000.003d006d 
txn start scn:  0x0000.003d51ee  logon user: 99  prev brb: 12583569  prev bcl: 0 BuExt idx: 0 flg2: 0
KDO undo record:
KTB Redo 
op: 0x04  ver: 0x01  
compat bit: 4 (post-11) padding: 1
op: L  itl: xid:  0x0003.01c.0000128a uba: 0x00c00dca.0236.1d
                      flg: C---    lkc:  0     scn: 0x0000.003b655d
Array Update of 1 rows: 
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 191
ncol: 3 nnew: 1 size: 0
KDO Op code:  21 row dependencies Disabled
  xtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x01000226  hdba: 0x01000222
itli: 1  ispac: 0  maxfr: 4858
vect = 4
col  1: [ 2]  c1 4c <!--保存修改前的数据--&gt

解答:
       1、 为什么对数据块修改的change的scn会小于对undo块的修改?!
         change中的SCN并不是redo信息产生或则写入的SCN而是被修改数据块的SCN信息。
         2、对数据块的修改为什么不是“OP:11.5”而是“OP:11.19” 
          if there is not a unique index on this table, in Oracle 10.2.0.4 (at least) an 11.19 operation will be generated instead of a 11.5 operation. 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11693228/viewspace-1061077/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11693228/viewspace-1061077/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值