redo IMU 与非IMU区别

redo 在 10G 以后增加了新功能就是  in memory undo
我们看一下  10G 前的 redo 与 in memory undo 的区别


1.非IMU 环境测试


NAME                           VALUE
------------------------------ -------------------------
_in_memory_undo                TRUE


有看到  _in_memory_undo 是开启的


我们现在 修改参数


SQL> alter system set "_in_memory_undo" = false scope=spfile;


系统已更改。


SQL> startup force;
ORACLE 例程已经启动。


Total System Global Area 1.2827E+10 bytes
Fixed Size                  2240344 bytes
Variable Size            1644167336 bytes
Database Buffers         1.1174E+10 bytes
Redo Buffers                7335936 bytes
数据库装载完毕。
数据库已经打开。






建立测试表




SQL> create table system.wh as select * from dba_objects;


表已创建。


SQL> alter system switch logfile;


系统已更改。




做一次更新操作


SQL> update system.wh set object_name='wh' where object_id=2;


已更新 1 行。


SQL> commit;


提交完成。




定位redo 文件



MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/redo06.log


将 redo 信息dump 出来


SQL> alter system dump logfile '/u01/app/oracle/oradata/orcl/redo06.log';


系统已更改。


-rw-r-----+ 1 oracle oinstall     157 Mar 13 11:00 orcl_ora_24247.trm
-rw-r-----+ 1 oracle oinstall  107028 Mar 13 11:00 orcl_ora_24247.trc




分析 trc 文件内容


由于文件里过多 REDO RECORD  .我们根据 object_name='wh'  wh 这个字符来定位



REDO RECORD - Thread:1 RBA: 0x000cde.00000007.0010 LEN: 0x01a0 VLD: 0x05
SCN: 0x0dcd.742ebacb SUBSCN:  1 03/13/2017 11:04:50
(LWN RBA: 0x000cde.00000007.0010 LEN: 0002 NST: 0001 SCN: 0x0dcd.742ebaca)  <=  描述REDO RECORD的基本信息,就是REDO RECORDER头
CHANGE #1 TYP:0 CLS:19 AFN:3(3号文件) DBA:0x00c00090(144数据块) OBJ:4294967295 SCN:0x0dcd.742ebac4 SEQ:1 OP:5.2 ENC:0 RBL:0
ktudh redo: slt: 0x000b sqn: 0x000252e3 flg: 0x0012 siz: 140 fbi: 0
            uba: 0x00c009bb.1597.1e    pxid:  0x0000.000.00000000
CHANGE #2 TYP:0 CLS:20 AFN:3(3号文件) DBA:0x00c009bb(2491数据块) OBJ:4294967295 SCN:0x0dcd.742ebac3 SEQ:3 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 140 spc: 2360 flg: 0x0012 seq: 0x1597 rec: 0x1e
            xid:  0x0002.00b.000252e3  
ktubl redo: slt: 11 rci: 0 opc: 11.1 [objn: 150827 objd: 150827 tsn: 0]
Undo type:  Regular undo        Begin trans    Last buffer split:  No 
Temp Object:  No 
Tablespace Undo:  No 
             0x00000000  prev ctl uba: 0x00c009bb.1597.1b 
prev ctl max cmt scn:  0x0dcd.740b6c6a  prev tx cmt scn:  0x0dcd.740b6c6c 
txn start scn:  0xffff.ffffffff  logon user: 0  prev brb: 12585401  prev bcl: 0 BuExt idx: 0 flg2: 0
KDO undo record:
KTB Redo 
op: 0x03  ver: 0x01  
compat bit: 4 (post-11) padding: 1
op: Z
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x00417461  hdba: 0x00417460
itli: 2  ispac: 0  maxfr: 4863
tabn: 0 slot: 48(0x30) flag: 0x2c lock: 0 ckix: 0
ncol: 14 nnew: 1 size: 4
col  1: [ 6]  43 5f 4f 42 4a 23(C_OBJ#)  <= 更改前的object_name
CHANGE #3 TYP:0 CLS:1 AFN:1 DBA:0x00417461 OBJ:150827 SCN:0x0dcd.742eba7b SEQ:2 OP:11.5 ENC:0 RBL:0
KTB Redo 
op: 0x01  ver: 0x01  
compat bit: 4 (post-11) padding: 1
op: F  xid:  0x0002.00b.000252e3    uba: 0x00c009bb.1597.1e
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x00417461  hdba: 0x00417460
itli: 2  ispac: 0  maxfr: 4863
tabn: 0 slot: 48(0x30) flag: 0x2c lock: 2 ckix: 0
ncol: 14 nnew: 1 size: -4
col  1: [ 2]  77 68 (wh) <= 更改后的object_name




2.IMU 进行测试




SQL> alter system set "_in_memory_undo" = true scope=spfile;


系统已更改。


SQL> startup force;
ORACLE 例程已经启动。


Total System Global Area 1.2827E+10 bytes
Fixed Size                  2240344 bytes
Variable Size            1644167336 bytes
Database Buffers         1.1174E+10 bytes
Redo Buffers                7335936 bytes
数据库装载完毕。
数据库已经打开。


创建测试表


SQL> drop table system.wh;


表已删除。


SQL> create table system.wh as select * from dba_objects;


表已创建。


SQL> alter system switch logfile;


系统已更改。




做一次commit 操作


SQL> update system.wh set object_name='wh' where object_id=2;


已更新 1 行。


SQL> commit;


提交完成。


定位 redo 文件




MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/redo02.log




SQL> alter system dump logfile '/u01/app/oracle/oradata/orcl/redo02.log';


系统已更改。


-rw-r-----+ 1 oracle oinstall     274 Mar 13 11:36 orcl_ora_24580.trm
-rw-r-----+ 1 oracle oinstall  118385 Mar 13 11:36 orcl_ora_24580.trc




我们获取trc文件内容


REDO RECORD - Thread:1 RBA: 0x000ce0.00000003.0010 LEN: 0x01e8 VLD: 0x0d
SCN: 0x0dcd.7463dfd0 SUBSCN:  1 03/13/2017 11:37:21
(LWN RBA: 0x000ce0.00000003.0010 LEN: 0001 NST: 0001 SCN: 0x0dcd.7463dfcf)    <=  描述REDO RECORD的基本信息,就是REDO RECORDER头
CHANGE #1 TYP:0 CLS:1 AFN:1 DBA:0x00417461 OBJ:150832 SCN:0x0dcd.7463df8c SEQ:1 OP:11.5 ENC:0 RBL:0
KTB Redo 
op: 0x01  ver: 0x01  
compat bit: 4 (post-11) padding: 1
op: F  xid:  0x0004.01d.00026ba9    uba: 0x00c028b7.1be9.20
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x00417461  hdba: 0x00417460
itli: 2  ispac: 0  maxfr: 4863
tabn: 0 slot: 48(0x30) flag: 0x2c lock: 2 ckix: 0
ncol: 14 nnew: 1 size: -4
col  1: [ 2]  77 68  (wh)  <= 更改后的object_name
CHANGE #2 TYP:0 CLS:23 AFN:3 DBA:0x00c000b0 OBJ:4294967295 SCN:0x0dcd.7463df74 SEQ:1 OP:5.2 ENC:0 RBL:0
ktudh redo: slt: 0x001d sqn: 0x00026ba9 flg: 0x0012 siz: 140 fbi: 0
            uba: 0x00c028b7.1be9.20    pxid:  0x0000.000.00000000
CHANGE #3 TYP:0 CLS:23 AFN:3 DBA:0x00c000b0 OBJ:4294967295 SCN:0x0dcd.7463dfd0 SEQ:1 OP:5.4 ENC:0 RBL:0
ktucm redo: slt: 0x001d sqn: 0x00026ba9 srt: 0 sta: 9 flg: 0x2 ktucf redo: uba: 0x00c028b7.1be9.20 ext: 110 spc: 3890 fbi: 0 
CHANGE #4 TYP:0 CLS:24 AFN:3 DBA:0x00c028b7 OBJ:4294967295 SCN:0x0dcd.7463df73 SEQ:1 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 140 spc: 4032 flg: 0x0012 seq: 0x1be9 rec: 0x20
            xid:  0x0004.01d.00026ba9  
ktubl redo: slt: 29 rci: 0 opc: 11.1 [objn: 150832 objd: 150832 tsn: 0]
Undo type:  Regular undo        Begin trans    Last buffer split:  No 
Temp Object:  No 
Tablespace Undo:  No 
             0x00000000  prev ctl uba: 0x00c028b6.1be9.18 
prev ctl max cmt scn:  0x0dcd.74265910  prev tx cmt scn:  0x0dcd.74265927 
txn start scn:  0x0dcd.7463dfbe  logon user: 0  prev brb: 12593331  prev bcl: 0 BuExt idx: 0 flg2: 0
KDO undo record:
KTB Redo 
op: 0x03  ver: 0x01  
compat bit: 4 (post-11) padding: 1
op: Z
KDO Op code: URP row dependencies Disabled
  xtype: XA flags: 0x00000000  bdba: 0x00417461  hdba: 0x00417460
itli: 2  ispac: 0  maxfr: 4863
tabn: 0 slot: 48(0x30) flag: 0x2c lock: 0 ckix: 0
ncol: 14 nnew: 1 size: 4
col  1: [ 6]  43 5f 4f 42 4a 23    (C_OBJ#)   <=  更新前的数值




IMU 与 非IMU 区别在于 多条commit 内容合并,这个测试只是  一条记录commit ,所以看不出区别.
大家可以亲自动手一下,测试一下  IMU 与  非IMU  redo 的区别

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

转载于:http://blog.itpub.net/7569309/viewspace-2135211/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值