Oracle内核的进步 ---- 新、老Redo机制对比
体系结构

非IMU下的redo产生过程
--分析redo log(update)

SQL> set sqlprompt "_USER@ _CONNECT_IDENTIFIER >"
SYS@ orcl >@?/rdbms/admin/show_para
Enter value for p: in_memory_undo
old 12: AND upper(i.ksppinm) LIKE upper('%&p%')
new 12: AND upper(i.ksppinm) LIKE upper('%in_memory_undo%')
P_NAME P_DESCRIPTION P_VALUE ISDEFAULT ISMODIFIED ISADJ
---------------------------------------- -------------------------------------------------- ------------------------------ --------- ---------- -----
_in_memory_undo Make in memory undo for top level transactions TRUE TRUE FALSE FALSE
SYS@ orcl >set linesize 1000
create table redo_test(id int,name varchar2(20));
insert into redo_test(id,name)values(1,'AAAAAAAAAAA');
insert into redo_test(id,name)values(2,'BBBBBBBBBBBBB');
COMMIT;
SYS@ orcl >SELECT * FROM TEST.REDO_TEST;
ID NAME
---------- --------------------
1 AAAAAAAAAAA
2 BBBBBBBBBBBBB SYS@ orcl >alter system switch logfile;
System altered.
SYS@ orcl >select * from v$Log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1 1 7 52428800 512 2 NO INACTIVE 9800422 12-JUN-19 9800537 12-JUN-19
2 1 8 52428800 512 1 NO ACTIVE 9800537 12-JUN-19 9803089 12-JUN-19
3 1 9 52428800 512 1 NO CURRENT 9803089 12-JUN-19 2.8147E+14
[root@DSI ~]# strings /u01/app/oracle/oradata/orcl/redo03.log  |grep redo_test
[root@DSI ~]# strings /u01/app/oracle/oradata/orcl/redo02.log |grep redo_test
create table redo_test(id int,name varchar2(20))
SYS@ orcl >alter system set "_in_memory_undo"=false;
System altered.
SYS@ orcl >select * from test.redo_test; ID NAME
---------- --------------------
1 AAAAAAAAAAA
2 BBBBBBBBBBBBB SYS@ orcl >update test.redo_test set name='cccccc' where rownum<=2;
2 rows updated. SYS@ orcl >commit;
Commit complete. SYS@ orcl >select object_id from user_objects where object_name='REDO_TEST';
no rows selected SYS@ orcl >conn test/test
Connected.
TEST@ orcl >select object_id from user_objects where object_name='REDO_TEST';
OBJECT_ID
----------
87535
TEST@ orcl >conn / as sysdba
Connected.
SYS@ orcl > alter system dump logfile '/u01/app/oracle/oradata/orcl/redo03.log';
System altered.
SYS@ orcl >oradebug setmypid
Statement processed.
SYS@ orcl >oradebug tracefile_name
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3137.trc

[root@DSI ~]# vim /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3137.trc
##根据上面查到的object_id=87535 去日志中搜索
三条日志:
第一条日志:
日志头
OP=5.2 ==>事务开始了
OP=5.1 ==>把数据前的值放到UNDO块
OP=11.5 ==>update修改数据

第二条日志:
日志头
OP=5.1 ==>把数据前的值放到UNDO块
OP=11.5 ==>update修改数据

第三条日志:
日志头
OP=5.4 ==>提交(事务结束)

三条日志:REDO RECORD
第一个REDO RECORD: REDO RECORD头+CHANGE VECTOR组成(一个CV就是一个操作),由三个CV组成
REDO RECORD - Thread:1 RBA: 0x000009.00000289.0010 LEN: 0x0224 VLD: 0x05
SCN: 0x0000.00959714 SUBSCN: 1 06/12/2019 16:20:54
(LWN RBA: 0x000009.00000289.0010 LEN: 0002 NST: 0001 SCN: 0x0000.00959713)
-------------------------------------------------------》REDO RECORD头
RBA: 0x000009.00000289.0010==(由三部分组成序列号,块号,偏移量或着叫第几个字节)--redo log循环写,0x000009日志序列号累加(对应v$Log中SEQUENCE#的值)
LEN: 0x0224:一条日志的长度
VLD: 0x05 :日志类型 CHANGE #1 TYP:0 CLS:25 AFN:3 DBA:0x00c000c0 OBJ:4294967295 SCN:0x0000.00959703 SEQ:1 OP:5.2 ENC:0 RBL:0
ktudh redo: slt: 0x0003 sqn: 0x0000202f flg: 0x0012 siz: 168 fbi: 0
uba: 0x00c028ae.01ae.0a pxid: 0x0000.000.00000000
------------------------------------------------------------------------->UNDO段头事务表
OP:5.2==》OPRATION CODE 向UNDO段的段头的事务表写事务信息
TYP:0(普通块)
CLS:25 (CLASS)
AFN:3 (绝对文件号)
DBA:0x00c000c0 数据块的地址
OBJ:4294967295 FFFFFFFF
SCN:0x0000.00959703 产生事务的时间 CHANGE #2 TYP:0 CLS:26 AFN:3 DBA:0x00c028ae OBJ:4294967295 SCN:0x0000.00959702 SEQ:3 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 168 spc: 6416 flg: 0x0012 seq: 0x01ae rec: 0x0a
xid: 0x0005.003.0000202f
ktubl redo: slt: 3 rci: 0 opc: 11.1 [objn: 87535 objd: 87535 tsn: 5]
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
0x00000000 prev ctl uba: 0x00c028ae.01ae.07
prev ctl max cmt scn: 0x0000.00959318 prev tx cmt scn: 0x0000.00959328
txn start scn: 0xffff.ffffffff logon user: 0 prev brb: 12593324 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: 0x0140313f hdba: 0x0140313a
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: 5
col 1: [] 41 41 41 41 41 41 41 41 41 41 41
————————————————————————————————》undo数据块 CHANGE #3 TYP:2 CLS:1 AFN:5 DBA:0x0140313f OBJ:87535 SCN:0x0000.0095953a SEQ:1 OP:11.5 ENC:0 RBL:0
KTB Redo
op: 0x11 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: F xid: 0x0005.003.0000202f uba: 0x00c028ae.01ae.0a
Block cleanout record, scn: 0x0000.00959714 ver: 0x01 opt: 0x02, entries follow...
itli: 1 flg: 2 scn: 0x0000.0095953a
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0140313f hdba: 0x0140313a
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 0
ncol: 2 nnew: 1 size: -5
col 1: [] 63 63 63 63 63 63
-----------------------------------------------------------》数据修改后的值
OP:11.5===》UPDATE操作
第二条REDO
REDO RECORD - Thread:1 RBA: 0x000009.0000028a.0044 LEN: 0x0124 VLD: 0x01
SCN: 0x0000.00959714 SUBSCN: 2 06/12/2019 16:20:54
CHANGE #1 TYP:0 CLS:26 AFN:3 DBA:0x00c028ae OBJ:4294967295 SCN:0x0000.00959714 SEQ:1 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 128 spc: 6246 flg: 0x0022 seq: 0x01ae rec: 0x0b
xid: 0x0005.003.0000202f
ktubu redo: slt: 3 rci: 10 opc: 11.1 objn: 87535 objd: 87535 tsn: 5
Undo type: Regular undo Undo type: Last buffer split: No
Tablespace Undo: No
0x00000000
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C uba: 0x00c028ae.01ae.0a
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0140313f hdba: 0x0140313a
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: 7
col 1: [] 42 42 42 42 42 42 42 42 42 42 42 42 42
CHANGE #2 TYP:0 CLS:1 AFN:5 DBA:0x0140313f OBJ:87535 SCN:0x0000.00959714 SEQ:1 OP:11.5 ENC:0 RBL:0
KTB Redo
op: 0x02 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C uba: 0x00c028ae.01ae.0b
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0140313f hdba: 0x0140313a
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 2 ckix: 0
ncol: 2 nnew: 1 size: -7
col 1: [] 63 63 63 63 63 63
第三条RECORD 提交OP:5.4作为单独的一条RECORD
REDO RECORD - Thread:1 RBA: 0x000009.0000028b.0010 LEN: 0x00d0 VLD: 0x05
SCN: 0x0000.00959716 SUBSCN: 1 06/12/2019 16:20:56
(LWN RBA: 0x000009.0000028b.0010 LEN: 0001 NST: 0001 SCN: 0x0000.00959715)
CHANGE #1 TYP:0 CLS:25 AFN:3 DBA:0x00c000c0 OBJ:4294967295 SCN:0x0000.00959714 SEQ:1 OP:5.4 ENC:0 RBL:0
ktucm redo: slt: 0x0003 sqn: 0x0000202f srt: 0 sta: 9 flg: 0x2 ktucf redo: uba: 0x00c028ae.01ae.0b ext: 2 spc: 6116 fbi: 0
CHANGE #2 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:24.4 ENC:0

非IMU下,在一个事务下面分别做两条UPDATE

SYS@ orcl >update test.redo_test set name='aaa' where id=1;
1 row updated. SYS@ orcl >update test.redo_test set name='bbb' where id=2;
1 row updated. SYS@ orcl >commit;
Commit complete. REDO RECORD - Thread:1 RBA: 0x000009.000002ed.0010 LEN: 0x0144 VLD: 0x05
SCN: 0x0000.009598d3 SUBSCN: 1 06/12/2019 16:39:56
(LWN RBA: 0x000009.000002ed.0010 LEN: 0001 NST: 0001 SCN: 0x0000.009598d2)
CHANGE #1 TYP:0 CLS:34 AFN:3 DBA:0x00c0021b OBJ:4294967295 SCN:0x0000.009598ca SEQ:1 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 120 spc: 6104 flg: 0x0022 seq: 0x01bf rec: 0x0c
xid: 0x0009.01a.00005b60
ktubu redo: slt: 26 rci: 11 opc: 11.1 objn: 87535 objd: 87535 tsn: 5
Undo type: Regular undo Undo type: Last buffer split: No
Tablespace Undo: No
0x00000000
KDO undo record:
KTB Redo
op: 0x02 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C uba: 0x00c0021b.01bf.0b
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0140313f hdba: 0x0140313a
itli: 1 ispac: 0 maxfr: 4858
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: 3
col 1: [] 63 63 63 63 63 63
CHANGE #2 TYP:0 CLS:1 AFN:5 DBA:0x0140313f OBJ:87535 SCN:0x0000.009598ca SEQ:1 OP:11.5 ENC:0 RBL:0
KTB Redo
op: 0x02 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: C uba: 0x00c0021b.01bf.0c
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0140313f hdba: 0x0140313a
itli: 1 ispac: 0 maxfr: 4858
tabn: 0 slot: 1(0x1) flag: 0x2c lock: 1 ckix: 0
ncol: 2 nnew: 1 size: -3
col 1: [] 62 62 62
REDO RECORD - Thread:1 RBA: 0x000009.000002ee.0010 LEN: 0x00d0 VLD: 0x05
SCN: 0x0000.009598d6 SUBSCN: 1 06/12/2019 16:39:59
(LWN RBA: 0x000009.000002ee.0010 LEN: 0001 NST: 0001 SCN: 0x0000.009598d5)
CHANGE #1 TYP:0 CLS:33 AFN:3 DBA:0x00c00100 OBJ:4294967295 SCN:0x0000.009598ca SEQ:1 OP:5.4 ENC:0 RBL:0
ktucm redo: slt: 0x001a sqn: 0x00005b60 srt: 0 sta: 9 flg: 0x2 ktucf redo: uba: 0x00c0021b.01bf.0c ext: 2 spc: 5982 fbi: 0
CHANGE #2 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:24.4 ENC:0 redo log中以行修改记录

在IMU下

SYS@ orcl >alter system set "_in_memory_undo"=true;
SYS@ orcl >show parameter in_memory_undo NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_in_memory_undo boolean TRUE
SYS@ orcl >shutdown immediate;
SYS@ orcl >startup
update test.redo_test set name='ccccc' where id=1;
update test.redo_test set name='ddddd' where id=2;
REDO RECORD - Thread:1 RBA: 0x00000b.00000002.0010 LEN: 0x0234 VLD: 0x05
SCN: 0x0000.00959bad SUBSCN: 1 06/12/2019 16:54:11
(LWN RBA: 0x00000b.00000002.0010 LEN: 0002 NST: 0001 SCN: 0x0000.00959baa)
CHANGE #1 TYP:0 CLS:29 AFN:3 DBA:0x00c000e0 OBJ:4294967295 SCN:0x0000.00959aae SEQ:1 OP:5.2 ENC:0 RBL:0
ktudh redo: slt: 0x001d sqn: 0x0000455c flg: 0x0012 siz: 184 fbi: 0
uba: 0x00c0388d.0246.0d pxid: 0x0000.000.00000000
CHANGE #2 TYP:0 CLS:30 AFN:3 DBA:0x00c0388d OBJ:4294967295 SCN:0x0000.00959a81 SEQ:1 OP:5.1 ENC:0 RBL:0
ktudb redo: siz: 184 spc: 5038 flg: 0x0012 seq: 0x0246 rec: 0x0d
xid: 0x0007.01d.0000455c
ktubl redo: slt: 29 rci: 0 opc: 11.1 [objn: 87535 objd: 87535 tsn: 5]
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
0x00000000 prev ctl uba: 0x00c0388d.0246.0c
prev ctl max cmt scn: 0x0000.00959429 prev tx cmt scn: 0x0000.0095951a
txn start scn: 0xffff.ffffffff logon user: 0 prev brb: 12597387 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: 0x0005.003.0000202f uba: 0x00c028ae.01ae.0b
flg: C--- lkc: 0 scn: 0x0000.00959716
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0140313f hdba: 0x0140313a
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0
ncol: 2 nnew: 1 size: -2
col 1: [] 61 61 61
CHANGE #3 TYP:2 CLS:1 AFN:5 DBA:0x0140313f OBJ:87535 SCN:0x0000.009598d6 SEQ:1 OP:11.5 ENC:0 RBL:0
KTB Redo
op: 0x11 ver: 0x01
compat bit: 4 (post-11) padding: 1
op: F xid: 0x0007.01d.0000455c uba: 0x00c0388d.0246.0d
Block cleanout record, scn: 0x0000.00959bad ver: 0x01 opt: 0x02, entries follow...
itli: 1 flg: 2 scn: 0x0000.009598d6
KDO Op code: URP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0140313f hdba: 0x0140313a
itli: 2 ispac: 0 maxfr: 4858
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 2 ckix: 0
ncol: 2 nnew: 1 size: 2
col 1: [] 63 63 63 63 63

---这里分析redo log,还是在非imu下的redo 格式,没有达到想要的目的

在IMU模式下的update的redo,

一条记日志==》6个CHANGE VECTOR
CHANGE #1 ==>OP:11.5 -->UPDATE
CHANGE #2 ==>OP:5.2 -->开始一个事务
CHANGE #3 ==>OP:11.5 —>UPDATE
CHANGE #4 ==>OP:5.4 --->COMMIT
CHANGE #5 ==>OP:5.1 --->UNDO
CHANGE #6 ==>OP:5.1 --->UNDO

非IMU
产生一条REDO RECORD的步骤
1、获取redo copy Latch
2、获取redo allocate Latch
3、申请到LOG BUFFER空间
4、释放redo allocate Latch
5、生产日志(从buffer cache copy 修改前的值。从PGA copy 修改后的值),产生日志头
6、释放redo copy Latch

SYS@ orcl >select latch#,name from v$latch where name like '%redo%';
LATCH# NAME
---------- ----------------------------------------------------------------
168 redo on-disk SCN
169 ping redo on-disk SCN
207 redo writing
208 redo copy
209 redo allocation
210 real redo SCN
212 readredo stats and histogram
238 readable standby metadata redo cache
544 KFR redo allocation latch 9 rows selected.

IMU--->把多条日志条目合并成一条,减少LATCH
多出一个IMU LATCH

附录:op操作代码

格式:layer: opcode
LAYER的含义:
4 — Block Cleanout
5 — Transaction Management
10 — 索引操作
11 — 行操作
13 — 段[url=]管理[/url]
14 — Extent 管理
17 — 表空间管理
18 — Block Image (Hot Backups)
19 — Direct Loader
20 — Compatibility segment
22 — 本地管理表空间
23 — Block Writes
24 — DDL语句
Layer 1 : Transaction Control - KCOCOTCT
Opcode 1 : KTZFMT
Opcode 2 : KTZRDH
Opcode 3 : KTZARC
Opcode 4 : KTZREP
Layer 2 : Transaction Read - KCOCOTRD
Layer 3 : Transaction Update - KCOCOTUP
Layer 4 : Transaction Block - KCOCOTBK [ktbcts.h]
Opcode 1 : Block Cleanout
Opcode 2 : Physical Cleanout
Opcode 3 : Single Array Change
Opcode 4 : Multiple Changes to an Array
Opcode 5 : Format Block
Layer 5 : Transaction Undo - KCOCOTUN [ktucts.h]
Opcode 1 : Undo block or undo segment header - KTURDB
Opcode 2 : Update rollback segment header - KTURDH
Opcode 3 : Rollout a transaction begin
Opcode 4 : Commit transaction (transaction table update)
- no undo record
Opcode 5 : Create rollback segment (format) - no undo record
Opcode 6 : Rollback record index in an undo block - KTUIRB
Opcode 7 : Begin transaction (transaction table update)
Opcode 8 : Mark transaction as dead
Opcode 9 : Undo routine to rollback the extend of a rollback segment
Opcode 10 :Redo to perform the rollback of extend of rollback segment
to the segment header.
Opcode 11 :Rollback DBA in transaction table entry - KTUBRB
Opcode 12 :Change transaction state (in transaction table entry)
Opcode 13 :Convert rollback segment format (V6 -> V7)
Opcode 14 :Change extent allocation parameters in a rollback segment
Opcode 15 :
Opcode 16 :
Opcode 17 :
Opcode 18 :
Opcode 19 : Transaction start audit log record
Opcode 20 : Transaction continue audit log record
Opcode 24 : Kernel Transaction Undo Relog CHanGe - KTURLGU
Layer 6 : Control File - KCOCODCF [tbs.h]
Layer 10 : INDEX - KCOCODIX [kdi.h]
Opcode 1 : load index block (Loader with direct mode)
Opcode 2 : Insert leaf row
Opcode 3 : Purge leaf row
Opcode 4 : Mark leaf row deleted
Opcode 5 : Restore leaf row (clear leaf delete flags)
Opcode 6 : Lock index block
Opcode 7 : Unlock index block
Opcode 8 : Initialize new leaf block
Opcode 9 : Apply Itl Redo
Opcode 10 :Set leaf block next link
Opcode 11 :Set leaf block previous link
Opcode 12 :Init root block after split
Opcode 13 :Make leaf block empty
Opcode 14 :Restore block before image
Opcode 15 :Branch block row insert
Opcode 16 :Branch block row purge
Opcode 17 :Initialize new branch block
Opcode 18 :Update keydata in row
Opcode 19 :Clear row’s split flag
Opcode 20 :Set row’s split flag
Opcode 21 :General undo above the cache (undo)
Opcode 22 :Undo operation on leaf key above the cache (undo)
Opcode 23 :Restore block to b-tree
Opcode 24 :Shrink ITL (transaction entries)
Opcode 25 :Format root block redo
Opcode 26 :Undo of format root block (undo)
Opcode 27 :Redo for undo of format root block
Opcode 28 :Undo for migrating block
Opcode 29 :Redo for migrating block
Opcode 30 :IOT leaf block nonkey update
Opcode 31 :Cirect load root redo
Opcode 32 :Combine operation for insert and restore rows
Layer 11 : Row Access - KCOCODRW [kdocts.h]
Opcode 1 : Interpret Undo Record (Undo)
Opcode 2 : Insert Row Piece
Opcode 3 : Drop Row Piece
Opcode 4 : Lock Row Piece
Opcode 5 : Update Row Piece
Opcode 6 : Overwrite Row Piece
Opcode 7 : Manipulate First Column (add or delete the 1rst column)
Opcode 8 : Change Forwarding address
Opcode 9 : Change the Cluster Key Index
Opcode 10 :Set Key Links (change the forward & backward key links
on a cluster key)
Opcode 11 :Quick Multi-Insert (ex: insert as select …)
Opcode 12 :Quick Multi-Delete
Opcode 13 :Toggle Block Header flags
Layer 12 : Cluster - KCOCODCL [?]
Layer 13 : Transaction Segment - KCOCOTSG [ktscts.h]
Opcode 1 : Data segment format
Opcode 2 : Merge
Opcode 3 : Set link in block
Opcode 4 : Not used
Opcode 5 : New block (affects segment header)
Opcode 6 : Format block (affects data block)
Opcode 7 : Record link
Opcode 8 : Undo free list (undo)
Opcode 9 : Redo free list head (called as part of undo)
Opcode 9 : Format free list block (freelist group)
Opcode 11 :Format new blocks in free list
Opcode 12 :free list clear
Opcode 13 :free list restore (back) (undo of opcode 12)
Layer 14 : Transaction Extent - KCOCOTEX [kte.h]
Opcode 1 : Add extent to segment
Opcode 2 : Unlock Segment Header
Opcode 3 : Extent DEaLlocation (DEL)
Opcode 4 : Undo to Add extent operation (see opcode 1)
Opcode 5 : Extent Incarnation number increment
Opcode 6 : Lock segment Header
Opcode 7 : Undo to rollback extent deallocation (see opcode 3)
Opcode 8 : Apply Position Update (truncate)
Opcode 9 : Link blocks to Freelist
Opcode 10 :Unlink blocks from Freelist
Opcode 11 :Undo to Apply Position Update (see opcode 8)
Opcode 12 :Convert segment header to 6.2.x type
Layer 15 : Table Space - KCOCOTTS [ktt.h]
Opcode 1 : Format deferred rollback segment header
Opcode 2 : Add deferred rollback record
Opcode 3 : Move to next block
Opcode 4 : Point to next deferred rollback record
Layer 16 : Row Cache - KCOCOQRC
Layer 17 : Recovery (REDO) - KCOCORCV [kcv.h]
Opcode 1 : End Hot Backup : This operation clears the hot backup
in-progress flags in the indicated list of files
Opcode 2 : Enable Thread : This operation creates a redo record
signalling that a thread has been enabled
Opcode 3 : Crash Recovery Marker
Opcode 4 : Resizeable datafiles
Opcode 5 : Tablespace ONline
Opcode 6 : Tablespace OFFline
Opcode 7 : Tablespace ReaD Write
Opcode 8 : Tablespace ReaD Only
Opcode 9 : ADDing datafiles to database
Opcode 10 : Tablespace DRoP
Opcode 11 : Tablespace PitR
Layer 18 : Hot Backup Log Blocks - KCOCOHLB [kcb.h]
Opcode 1 : Log block image
Opcode 2 : Recovery testing
Layer 19 : Direct Loader Log Blocks - KCOCODLB [kcbl.h]
Opcode 1 : Direct block logging
Opcode 2 : Invalidate range
Opcode 3 : Direct block relogging
Opcode 4 : Invalidate range relogging
Layer 20 : Compatibility Segment operations - KCOCOKCK [kck.h]
Opcode 1 : Format compatibility segment - KCKFCS
Opcode 2 : Update compatibility segment - KCKUCS
Layer 21 : LOB segment operations - KCOCOLFS [kdl2.h]
Opcode 1 : Write data into ILOB data block - KDLOPWRI
Layer 22 : Tablespace bitmapped file operations - KCOCOTBF [ktfb.h]
Opcode 1 : format space header - KTFBHFO
Opcode 2 : space header generic redo - KTFBHREDO
Opcode 3 : space header undo - KTFBHUNDO
Opcode 4 : space bitmap block format - KTFBBFO
Opcode 5 : bitmap block generic redo - KTFBBREDO
Layer 23 : write behind logging of blocks - KCOCOLWR [kcbb.h]
Opcode 1 : Dummy block written callback - KCBBLWR
Layer 24 : Logminer related (DDL or OBJV# redo) - KCOCOKRV [krv.h]
Opcode : common portion of the ddl - KRVDDL
Opcode : direct load redo - KRVDLR
Opcode : lob related info - KRVLOB
Opcode : misc info - KRVMISC
Opcode : user info - KRVUSER 还有begin backup时是18.1
end backup 是17.1
nologging操作是19.2 并注明是invld

最新文章

  1. JAVAScript柯里化、部分应用参数终极理解
  2. js读书笔记
  3. 机器学习之决策树熵&amp;信息增量求解算法实现
  4. [转]python问题:IndentationError:expected an indented block错误解决
  5. FLASH CC 2015 CANVAS (一) 与AS3的写法区别
  6. [AHOI 2006][BZOJ 1269]文本编辑器editor
  7. [译] ASP.NET 生命周期 – ASP.NET 应用生命周期(一)
  8. Python设计模式——观察者模式
  9. objc_msgSend iOS8 EXC_BAD_ACCESS
  10. 安卓开发之mqtt协议
  11. 原生wcPop.js消息提示框(移动端)、内含仿微信弹窗效果
  12. 《Java》第三周学习总结 20175301
  13. ubuntu16.04开机花屏蓝屏解决方案
  14. Programming好文解读系列(—)——代码整洁之道
  15. 金融量化分析【day113】:羊驼策略
  16. Android 权限信息
  17. ARM汇编返回指令
  18. spring注入的四种方式
  19. apue.h文件找不到的解决办法
  20. Mybatis代码学习

热门文章

  1. mongoose 开源http库
  2. python爬虫及结巴分词《攀登者》影评分析
  3. Windows 2012 R2 DataCenter服务器 重启之后,其他加域电脑无法访问域账户
  4. rsyncd.conf配置文件
  5. C++、java、python的一些区别
  6. HDU-2389-Rain on your Parade (最大匹配,kopcroft-karp)
  7. Vue文件路径引入
  8. 【NOIP2014模拟8.17】Magical GCD
  9. NOIP2016提高A组五校联考3总结
  10. canal 环境搭建 kafka Zookeeper安装(二)