本帖最后由 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--> 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--> 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--> 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 <!--保存修改前的数据--> 解答: 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/