imu oracle,Oracle redo IMU 与非IMU区别

redo 在 10G 以后增加了新功能就是  in memory undo

我们看一下  10G 前的 redo 与 in memory undo 的区别

1.非IMU 环境测试

SQL> set linesize 132

SQL> column name format a30

SQL> column value format a25

SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE FROM SYS.x$ksppi x, SYS.x$ksppcv y WHERE x.indx = y.indx AND x.ksppinm = '_in_memory_undo';

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 文件

SQL> select group#, SEQUENCE#,status from v$log;

GROUP#  SEQUENCE# STATUS

---------- ---------- ----------------

1       3289 INACTIVE

2       3290 INACTIVE

3       3291 INACTIVE

4       3292 INACTIVE

5       3293 ACTIVE

6       3294 CURRENT

已选择6行。

SQL> select member from v$logfile where group#=6;

MEMBER

--------------------------------------------------------------------------------

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

将 redo 信息dump 出来

分析 trc 文件内容

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

Typ=96 Len=2: 77,68

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 文件

SQL>  select group#, SEQUENCE#,status from v$log;

GROUP#  SEQUENCE# STATUS

---------- ---------- ----------------

1       3295 ACTIVE

2       3296 CURRENT

3       3291 INACTIVE

4       3292 INACTIVE

5       3293 INACTIVE

6       3294 INACTIVE

已选择6行。

SQL>

SQL>  select member from v$logfile where group#=2;

MEMBER

--------------------------------------------------------------------------------

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

我们获取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 的区别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值