This level includes all DML operations performed on table data, including INSERT, UPDATE and DELETE. Operations include:
These operations are described in more detail in the following sections. The full list of known operations in Oracle 10.2 is as follows:
Code | Mnemonic | Description |
11.1 | IUR | Undo |
11.2 | IRP | Insert Row Piece |
11.3 | DRP | Delete Row Piece |
11.4 | LKR | Lock Row |
11.5 | URP | Update Row Piece |
11.6 | ORP | Overflow Row Piece |
11.7 | MFC | |
11.8 | CFA | |
11.9 | CKI | |
11.10 | SKL | |
11.11 | QMI | Insert Row Array |
11.12 | QMD | Delete Row Array |
11.14 | DSC | |
11.16 | LMN | |
11.17 | LLB | |
11.19 | 19 | Update Row Array |
11.20 | SHK | |
11.21 | 21 |
Each operation operates on a single table block.
This operation is the undo for 11.2 (IRP), 11.3 (DRP) and 11.5 (URP) (and possibly other level 11 operations)
This operation inserts a row piece into a table.
The following example was developed in Oracle 10.2.0.4 (Linux 32-bit)
Consider the following code:
CREATE TABLE team ( team_code VARCHAR2(3), team_name VARCHAR2(30), country_code VARCHAR2(3) ); INSERT INTO team VALUES ('MCL','McLaren','GBR'); COMMIT;
Note that an initial row has been inserted into the table to simplify the redo log output
The statement:
INSERT INTO team VALUES ('FER','Ferrari','ITA');
generates the following redo:
CHANGE #1 TYP:2 CLS: 1 AFN:4 DBA:0x01001af0 OBJ:52432 SCN:0x0000.0012223a SEQ: 3 OP:11.2 KTB Redo op: 0x01 ver: 0x01 op: F xid: 0x0006.010.000001b1 uba: 0x008004f1.0151.0b KDO Op code: IRP row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb itli: 2 ispac: 0 maxfr: 4858 tabn: 0 slot: 1(0x1) size/delt: 19 fb: --H-FL-- lb: 0x2 cc: 3 null: --- col 0: [ 3] 46 45 52 col 1: [ 7] 46 65 72 72 61 72 69 col 2: [ 3] 49 54 41
KTB Redo op: 0x01 ver: 0x01 op: F xid: 0x0006.010.000001b1 uba: 0x008004f1.0151.0b
See KTBRedo
KDO Op code: IRP row dependencies Disabled
IRP Operation code: Insert Row Piece
row dependencies specifies whether row dependencies are disabled (default) or enabled for this table
xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb
xtype transaction type. Can be XA, XR, CR or KDO_KDOM2
flags awaiting further information
bdba block DBA. Data block address of this block
hdba header DBA. Probably data block address of extent header
itli: 2 ispac: 0 maxfr: 4858
itli specifes the ITL slot number of the transaction performing the operation. In this example the row is locked by the transaction in the second ITL slot.
ispac awaiting further information
maxfr awaiting further information
tabn: 0 slot: 1(0x1) size/delt: 19
tabn specifies the table number. For non-clustered tables this will always be 0
slot specifies the slot number. Each block has an variable length array of slots. Each element in this array specifies the location of a row within the block. The first slot in the block is 0. In this example the row has been written to the second slot in the table (slot 1)
size/delt: specifies the change in size of the block. In this example, the size has increased by 19 bytes which consists of the following:
fb: --H-FL-- lb: 0x2 cc: 3
fb is the flag byte which contains eight bit flags with the following values:
Flag | Description |
K | Cluster key |
C | Clustered row |
H | Head piece of row |
D | Deleted row |
F | First piece in row |
L | Last piece in row |
P | Previous row piece exists |
N | Next row piece exists |
lb is the lock byte which specifies the transaction in the ITL table that is currently locking this row. In this example the row is locked by the transaction in the second ITL slot.
cc is the column count of the number of columns being inserted. In this example 3 column values are being inserted into the table.
col 0: [ 3] 46 45 52
Column 0 is the first column in the row. In this case the 3 byte VARCHAR2 value is 'FER'
col 1: [ 7] 46 65 72 72 61 72 69
Column 1 is the second column in the row. In this case the 7 byte VARCHAR2 value is 'FERRARI'
col 2: [ 3] 49 54 41
Column 2 is the third column in the row. In this case the 3 byte VARCHAR2 value is 'ITA' (Italy)
The above statement generated the following undo:
CHANGE #4 TYP:0 CLS:28 AFN:2 DBA:0x008004f1 OBJ:4294967295 SCN:0x0000.00122119 SEQ: 1 OP:5.1 ktudb redo: siz: 108 spc: 6734 flg: 0x0012 seq: 0x0151 rec: 0x0b xid: 0x0006.010.000001b1 ktubl redo: slt: 16 rci: 0 opc: 11.1 objn: 52432 objd: 52432 tsn: 4 Undo type: Regular undo Begin trans Last buffer split: No Temp Object: No Tablespace Undo: No 0x00000000 prev ctl uba: 0x008004f1.0151.0a prev ctl max cmt scn: 0x0000.00121033 prev tx cmt scn: 0x0000.00121034 txn start scn: 0x0000.00000000 logon user: 59 prev brb: 0 prev bcl: 0 KDO undo record: KTB Redo op: 0x03 ver: 0x01 op: Z KDO Op code: DRP row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb itli: 2 ispac: 0 maxfr: 4858 tabn: 0 slot: 1(0x1)
This operation deletes a row piece from a table
The following example was developed in Oracle 10.2.0.4 (Linux 32-bit)
Consider the following code:
CREATE TABLE team ( team_code VARCHAR2(3), team_name VARCHAR2(30), country_code VARCHAR2(3) ); INSERT INTO team VALUES ('MCL','McLaren','GBR'); INSERT INTO team VALUES ('FER','Ferrari','ITA'); COMMIT;
The statement:
DELETE FROM team WHERE team_code = 'FER';
generates the following redo:
CHANGE #1 TYP:2 CLS: 1 AFN:4 DBA:0x01001af0 OBJ:52432 SCN:0x0000.00123482 SEQ: 3 OP:11.3 KTB Redo op: 0x11 ver: 0x01 op: F xid: 0x0008.014.00000172 uba: 0x00800025.02bc.2a Block cleanout record, scn: 0x0000.0012348c ver: 0x01 opt: 0x02, entries follow... itli: 1 flg: 2 scn: 0x0000.00123482 itli: 2 flg: 2 scn: 0x0000.00123473 KDO Op code: DRP row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb itli: 2 ispac: 0 maxfr: 4858 tabn: 0 slot: 1(0x1)
KTB Redo op: 0x011 ver: 0x01 op: F xid: 0x0008.014.00000172 uba: 0x00800025.02bc.2a
See KTBRedo
Block cleanout record, scn: 0x0000.0012348c ver: 0x01 opt: 0x02, entries follow...
If the ITL has not been updated out since the last transaction changes where committed or rolled back then a block cleanout is performed
scn System change number of block cleanout. Format is wrap#.base#
ver Version number
opt Option number
itli: 1 flg: 2 scn: 0x0000.00123482
First ITL element being cleaned out.
itli ITL element number (1 based)
flg Flag
scn System Change Number of entry
itli: 2 flg: 2 scn: 0x0000.00123473
Second ITL element being cleaned out.
KDO Op code: DRP row dependencies Disabled
DRP Operation code: Dnsert Row Piece
row dependencies specifies whether row dependencies are disabled (default) or enabled for this table
xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb
xtype transaction type. Can be XA, XR, CR or KDO_KDOM2
flags awaiting further information
bdba block DBA. Data block address of this block
hdba header DBA. Probably data block address of extent header
itli: 2 ispac: 0 maxfr: 4858
itli specifes the ITL slot number of the transaction performing the operation. In this example the row is locked by the transaction in the second ITL slot.
ispac awaiting further information
maxfr awaiting further information
tabn: 0 slot: 1(0x1)
tabn specifies the table number. For non-clustered tables this will always be 0
slot specifies the slot number. Each block has an variable length array of slots. Each element in this array specifies the location of a row within the block. The first slot in the block is 0. In this example the row was written to the second slot in the table (slot 1)
The above statement generated the following undo:
CHANGE #4 TYP:0 CLS:32 AFN:2 DBA:0x00800025 OBJ:4294967295 SCN:0x0000.001233e7 SEQ: 1 OP:5.1 ktudb redo: siz: 188 spc: 1568 flg: 0x0012 seq: 0x02bc rec: 0x2a xid: 0x0008.014.00000172 ktubl redo: slt: 20 rci: 0 opc: 11.1 objn: 52432 objd: 52432 tsn: 4 Undo type: Regular undo Begin trans Last buffer split: No Temp Object: No Tablespace Undo: No 0x00000000 prev ctl uba: 0x00800025.02bc.29 prev ctl max cmt scn: 0x0000.0012205e prev tx cmt scn: 0x0000.00122072 txn start scn: 0x0000.00000000 logon user: 59 prev brb: 8388625 prev bcl: 0 KDO undo record: KTB Redo op: 0x04 ver: 0x01 op: L itl: xid: 0x0007.00f.0000013a uba: 0x0080012d.012a.1c flg: C--- lkc: 0 scn: 0x0000.00123473 KDO Op code: IRP row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb itli: 2 ispac: 0 maxfr: 4858 tabn: 0 slot: 1(0x1) size/delt: 19 fb: --H-FL-- lb: 0x0 cc: 3 null: --- col 0: [ 3] 46 45 52 col 1: [ 7] 46 65 72 72 61 72 69 col 2: [ 3] 49 54 41
This operation locks a row to prevent updates by other transactions
The following example was developed in Oracle 10.2.0.4 (Linux 32-bit)
Consider the following code:
CREATE TABLE team ( team_code VARCHAR2(3), team_name VARCHAR2(30), country_code VARCHAR2(3) ); INSERT INTO team VALUES ('MCL','McLaren','GBR'); INSERT INTO team VALUES ('FER','Ferrari','ITA'); COMMIT;
The statement:
SELECT * FROM team WHERE team_code = 'FER' FOR UPDATE;
generates the following redo:
CHANGE #1 TYP:2 CLS: 1 AFN:4 DBA:0x01001af0 OBJ:52432 SCN:0x0000.00123aab SEQ: 2 OP:11.4 KTB Redo op: 0x11 ver: 0x01 op: F xid: 0x0004.01e.00000145 uba: 0x00800725.0105.0e Block cleanout record, scn: 0x0000.00123b5e ver: 0x01 opt: 0x02, entries follow... itli: 2 flg: 2 scn: 0x0000.00123aab KDO Op code: LKR row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb itli: 1 ispac: 0 maxfr: 4858 tabn: 0 slot: 1 to: 1
KTB Redo op: 0x011 ver: 0x01 op: F xid: 0x0004.01e.00000145 uba: 0x00800725.0105.0e
See KTBRedo
Block cleanout record, scn: 0x0000.00123b5e ver: 0x01 opt: 0x02, entries follow...If the ITL has not been updated out since the last transaction changes where committed or rolled back then a block cleanout is performed
scn System change number of block cleanout. Format is wrap#.base#
ver Version number
opt Option number
itli: 2 flg: 2 scn: 0x0000.00123aab
First ITL element being cleaned out - slot 2
itli ITL element number (1 based)
flg Flag
scn System Change Number of entry
KDO Op code: LKR row dependencies Disabled
LKR Operation code: Lock Row
row dependencies specifies whether row dependencies are disabled (default) or enabled for this table
xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb
xtype transaction type. Can be XA, XR, CR or KDO_KDOM2
flags awaiting further information
bdba block DBA. Data block address of this block
hdba header DBA. Probably data block address of extent header
itli: 1 ispac: 0 maxfr: 4858
tli specifes the ITL slot number of the transaction performing the operation. In this example the row is locked by the transaction in the second ITL slot.
ispac awaiting further information
maxfr awaiting further information
tabn: 0 slot: 1 to: 1
abn specifies the table number. For non-clustered tables this will always be 0
slot specifies the slot number. Each block has an variable length array of slots. Each element in this array specifies the location of a row within the block. The first slot in the block is 0. In this example the row was written to the second slot in the table (slot 1)
to specifies whether the lock is being set (1) or released (0)
The above statement generated the following undo:
CHANGE #4 TYP:0 CLS:24 AFN:2 DBA:0x00800725 OBJ:4294967295 SCN:0x0000.00123936 SEQ: 1 OP:5.1 ktudb redo: siz: 132 spc: 4892 flg: 0x0012 seq: 0x0105 rec: 0x0e xid: 0x0004.01e.00000145 ktubl redo: slt: 30 rci: 0 opc: 11.1 objn: 52432 objd: 52432 tsn: 4 Undo type: Regular undo Begin trans Last buffer split: No Temp Object: No Tablespace Undo: No 0x00000000 prev ctl uba: 0x00800725.0105.0d prev ctl max cmt scn: 0x0000.00122231 prev tx cmt scn: 0x0000.00122236 txn start scn: 0x0000.00000000 logon user: 59 prev brb: 8388667 prev bcl: 0 KDO undo record: KTB Redo op: 0x04 ver: 0x01 op: L itl: xid: 0x0001.003.00000155 uba: 0x00800688.016a.05 flg: C--- lkc: 0 scn: 0x0000.00123a9a KDO Op code: LKR row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01001af0 hdba: 0x01001aeb itli: 1 ispac: 0 maxfr: 4858 tabn: 0 slot: 1 to: 0
This operation updates a row piece in a table
The following example was developed in Oracle 10.2.0.4 (Linux 32-bit)
Consider the following code:
CREATE TABLE team ( team_code VARCHAR2(3), team_name VARCHAR2(30), country_code VARCHAR2(3) ); CREATE UNIQUE INDEX team_pk ON team (team_code); INSERT INTO team VALUES ('MCL','McLaren','GBR'); INSERT INTO team VALUES ('FER','Ferrari','ITA'); INSERT INTO team VALUES ('RBR','Red Bull','RBR'); COMMIT;
Note that 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.
The statement:
UPDATE team SET country_code = 'OST' WHERE team_code = 'RBR';
generates the following redo:
CHANGE #1 TYP:2 CLS: 1 AFN:4 DBA:0x01001af0 OBJ:52432 SCN:0x0000.00124511 SEQ: 1 OP:11.5 KTB Redo op: 0x11 ver: 0x01 op: F xid: 0x0001.012.00000154 uba: 0x00800687.016a.0e Block cleanout record, scn: 0x0000.00124514 ver: 0x01 opt: 0x02, entries follow... itli: 2 flg: 2 scn: 0x0000.00124511 KDO Op code: URP row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01001af0 hdba: 0x01001aeb itli: 1 ispac: 0 maxfr: 4858 tabn: 0 slot: 5(0x5) flag: 0x2c lock: 1 ckix: 191 ncol: 3 nnew: 1 size: 0 Vector content: col 2: [ 3] 4f 53 54
KTB Redo op: 0x011 ver: 0x01 op: F xid: 0x0001.012.00000154 uba: 0x00800687.016a.0e
See KTBRedo
Block cleanout record, scn: 0x0000.00124514 ver: 0x01 opt: 0x02, entries follow...If the ITL has not been updated out since the last transaction changes where committed or rolled back then a block cleanout is performed
scn System change number of block cleanout. Format is wrap#.base#
ver Version number
opt Option number
itli: 2 flg: 2 scn: 0x0000.00124511
First ITL element being cleaned out - slot 2
itli ITL element number (1 based)
flg Flag
scn System Change Number of entry
KDO Op code: URP row dependencies Disabled
URP Operation code: Update Row Piece
row dependencies specifies whether row dependencies are disabled (default) or enabled for this table
xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01001af0 hdba: 0x01001aeb
xtype transaction type. Can be XA, XR, CR or KDO_KDOM2. In this case the transaction type is KDO_KDOM2. This structure can potentially store an array of change vectors for an object.
flags awaiting further information
bdba block DBA. Data block address of this block
hdba header DBA. Probably data block address of extent header
itli: 1 ispac: 0 maxfr: 4858
tli specifes the ITL slot number of the transaction performing the operation. In this example the row is locked by the transaction in the first ITL slot.
ispac awaiting further information
maxfr awaiting further information
tabn: 0 slot: 5(0x5) flag: 0x2c lock: 1 ckix: 191
abn specifies the table number. For non-clustered tables this will always be 0
slot specifies the slot number. Each block has an variable length array of slots. Each element in this array specifies the location of a row within the block. The first slot in the block is 0. In this example the row was written to the second slot in the table (slot 1)
flag awaiting further information
lock probably set to 1 indicating a lock has been taken on the row header
ckix awaiting further information
ncol: 3 nnew: 1 size: 0
ncol Number of columns in row piece
nnew Number of changed columns in row piece
size (Probably) change in size of row piece
Vector content:
Vector content: List of updated column values
col 2: [ 3] 4f 53 54
Update of column 2 (country_code) to 'OST'
The above statement generated the following undo:
CHANGE #4 TYP:0 CLS:18 AFN:2 DBA:0x00800687 OBJ:4294967295 SCN:0x0000.00124487 SEQ: 1 OP:5.1 ktudb redo: siz: 152 spc: 6280 flg: 0x0012 seq: 0x016a rec: 0x0e xid: 0x0001.012.00000154 ktubl redo: slt: 18 rci: 0 opc: 11.1 objn: 52432 objd: 52432 tsn: 4 Undo type: Regular undo Begin trans Last buffer split: No Temp Object: No Tablespace Undo: No 0x00000000 prev ctl uba: 0x00800687.016a.0d prev ctl max cmt scn: 0x0000.00122c72 prev tx cmt scn: 0x0000.00122c86 txn start scn: 0x0000.00124511 logon user: 59 prev brb: 8390264 prev bcl: 0 KDO undo record: KTB Redo op: 0x04 ver: 0x01 op: L itl: xid: 0x0009.005.00000195 uba: 0x0080019a.0187.19 flg: C--- lkc: 0 scn: 0x0000.00124473 KDO Op code: URP row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01001af0 hdba: 0x01001aeb itli: 1 ispac: 0 maxfr: 4858 tabn: 0 slot: 5(0x5) flag: 0x2c lock: 0 ckix: 191 ncol: 3 nnew: 1 size: 0 Vector content: col 2: [ 3] 47 42 52
This operation inserts a set of rows into a table
The following example was developed in Oracle 10.2.0.4 (Linux 32-bit)
Consider the following code:
CREATE TABLE team ( team_code VARCHAR2(3), team_name VARCHAR2(30), country_code VARCHAR2(3) ); INSERT INTO team VALUES ('MCL','McLaren','GBR'); INSERT INTO team VALUES ('FER','Ferrari','ITA'); COMMIT; CREATE TABLE team2 ( team_code VARCHAR2(3), team_name VARCHAR2(30), country_code VARCHAR2(3) ); INSERT INTO team2 VALUES ('BMW','BMW','GER'); INSERT INTO team2 VALUES ('WIL','Williams','GBR'); INSERT INTO team2 VALUES ('REN','Renault','REN'); COMMIT;
The statement:
INSERT INTO team SELECT * FROM team2;
generates the following redo:
CHANGE #3 TYP:2 CLS: 1 AFN:4 DBA:0x01001b14 OBJ:52798 SCN:0x0000.00157cf0 SEQ: 1 OP:11.11 KTB Redo op: 0x01 ver: 0x01 op: F xid: 0x0007.01c.0000014c uba: 0x00800fc7.012f.14 KDO Op code: QMI row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01001b14 hdba: 0x01001b13 itli: 2 ispac: 0 maxfr: 4858 tabn: 0 lock: 2 nrow: 3 slot[0]: 2 tl: 15 fb: --H-FL-- lb: 0x0 cc: 3 col 0: [ 3] 42 4d 57 col 1: [ 3] 42 4d 57 col 2: [ 3] 47 45 52 slot[1]: 3 tl: 20 fb: --H-FL-- lb: 0x0 cc: 3 col 0: [ 3] 57 49 4c col 1: [ 8] 57 69 6c 6c 69 61 6d 73 col 2: [ 3] 47 42 52 slot[2]: 4 tl: 19 fb: --H-FL-- lb: 0x0 cc: 3 col 0: [ 3] 52 45 4e col 1: [ 7] 52 65 6e 61 75 6c 74 col 2: [ 3] 52 45 4e
KTB Redo op: 0x01 ver: 0x01 op: F xid: 0x0007.01c.0000014c uba: 0x00800fc7.012f.14
See KTBRedo
KDO Op code: QMI row dependencies Disabled
QMI Operation code: Insert array of rows
row dependencies specifies whether row dependencies are disabled (default) or enabled for this table
xtype: XA flags: 0x00000000 bdba: 0x01001b14 hdba: 0x01001b13
xtype transaction type. Can be XA, XR, CR or KDO_KDOM2
flags awaiting further information
bdba block DBA. Data block address of this block
hdba header DBA. Probably data block address of extent header
itli: 2 ispac: 0 maxfr: 4858
itli specifes the ITL slot number of the transaction performing the operation. In this example the row is locked by the transaction in the second ITL slot.
ispac awaiting further information
maxfr awaiting further information
tabn: 0 lock: 2 nrow: 3
tabn specifies the table number. For non-clustered tables this will always be 0
lock possibly ITL slot holding the lock
nrow number of rows
slot[0]: 2
first row
tl: 15 fb: --H-FL-- lb: 0x0 cc: 3
tl total length (15 bytes = 3 bytes header + 3 length bytes + 9 data bytes)
fb flag byte
lb lock byte - rows locked in table header on this block only
cc column count
col 0: [ 3] 42 4d 57
Row 0 Column 0 - 3 bytes - BMW
col 1: [ 3] 42 4d 57
Row 0 Column 1 - 3 bytes - BMW
col 2: [ 3] 47 45 52
Row 0 Column 2 - 3 bytes - GER
slot[1]: 3
second row
tl: 20 fb: --H-FL-- lb: 0x0 cc: 3
tl total length (20 bytes = 3 bytes header + 3 length bytes + 14 data bytes)
fb flag byte
lb lock byte - rows locked in table header on this block only
cc column count
col 0: [ 3] 57 49 4c
Row 1 Column 0 - 3 bytes - WIL
col 1: [ 8] 57 69 6c 6c 69 61 6d 73
Row 1 Column 1 - 8 bytes - Williams
col 2: [ 3] 47 42 52
Row 1 Column 2 - 3 bytes - GBR
slot[2]: 4
third row
tl: 19 fb: --H-FL-- lb: 0x0 cc: 3
tl total length (19 bytes = 3 bytes header + 3 length bytes + 13 data bytes)
fb flag byte
lb lock byte - rows locked in table header on this block only
cc column count
col 0: [ 3] 52 45 4e
Row 2 Column 0 - 3 bytes - REN
col 1: [ 7] 52 65 6e 61 75 6c 74
Row 2 Column 1 - 7 bytes - Renault
col 2: [ 3] 52 45 4e
Row 2 Column 2 - 3 bytes - FRA
The above statement generated the following undo:
CHANGE #2 TYP:0 CLS:30 AFN:2 DBA:0x00800fc7 OBJ:4294967295 SCN:0x0000.00157d25 SEQ: 1 OP:5.1 ktudb redo: siz: 140 spc: 5916 flg: 0x0012 seq: 0x012f rec: 0x14 xid: 0x0007.01c.0000014c ktubl redo: slt: 28 rci: 0 opc: 11.1 objn: 52798 objd: 52798 tsn: 4 Undo type: Regular undo Begin trans Last buffer split: No Temp Object: No Tablespace Undo: No 0x00000000 prev ctl uba: 0x00800fc7.012f.05 prev ctl max cmt scn: 0x0000.0015760e prev tx cmt scn: 0x0000.00157655 txn start scn: 0xffff.ffffffff logon user: 59 prev brb: 8392639 prev bcl: 0 KDO undo record: KTB Redo op: 0x03 ver: 0x01 op: Z KDO Op code: QMD row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01001b14 hdba: 0x01001b13 itli: 2 ispac: 0 maxfr: 4858 tabn: 0 lock: 0 nrow: 3 slot[0]: 2 slot[1]: 3 slot[2]: 4
This operation deletes a set of rows from a table. Apparently this operation is only called by undo as the inverse operation to the 11.11 Array Insert operation.
This operation updates a set of rows into a table
For example:
CHANGE #1 TYP:0 CLS:1 AFN:4 DBA:0x01000c15 OBJ:79792 SCN:0x0000.003ddd32 SEQ:1 OP:11.19 ENC:0 RBL:0 KTB Redo op: 0x11 ver: 0x01 compat bit: 4 (post-11) padding: 1 op: F xid: 0x0002.012.0000075e uba: 0x00c00703.035b.2e Block cleanout record, scn: 0x0000.003ddd7e ver: 0x01 opt: 0x02, entries follow... itli: 2 flg: 2 scn: 0x0000.003ddd31 Array Update of 3 rows: tabn: 0 slot: 59(0x3b) flag: 0x2c lock: 3 ckix: 0 ncol: 12 nnew: 1 size: 0 KDO Op code: 21 row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01000c15 hdba: 0x01000c0a itli: 3 ispac: 0 maxfr: 4858 vect = 35 col 11: [ 2] c1 0c tabn: 0 slot: 60(0x3c) flag: 0x2c lock: 3 ckix: 0 ncol: 12 nnew: 1 size: 0 KDO Op code: 21 row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01000c15 hdba: 0x01000c0a itli: 3 ispac: 0 maxfr: 4858 vect = 35 col 11: [ 2] c1 0a tabn: 0 slot: 61(0x3d) flag: 0x2c lock: 3 ckix: 0 ncol: 12 nnew: 1 size: 0 KDO Op code: 21 row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01000c15 hdba: 0x01000c0a itli: 3 ispac: 0 maxfr: 4858 vect = 35 col 11: [ 2] c1 08
The above change updates three rows in the same block
The change includes the new values. The old values are includes in the undo change which follows:
CHANGE #4 TYP:0 CLS:20 AFN:3 DBA:0x00c00703 OBJ:4294967295 SCN:0x0000.003ddd2d SEQ:1 OP:5.1 ENC:0 RBL:0 ktudb redo: siz: 248 spc: 3228 flg: 0x0012 seq: 0x035b rec: 0x2e xid: 0x0002.012.0000075e ktubl redo: slt: 18 rci: 0 opc: 11.1 [objn: 79792 objd: 79792 tsn: 4] Undo type: Regular undo Begin trans Last buffer split: No Temp Object: No Tablespace Undo: No 0x00000000 prev ctl uba: 0x00c00703.035b.2d prev ctl max cmt scn: 0x0000.003c9962 prev tx cmt scn: 0x0000.003c996c txn start scn: 0x0000.003ddd78 logon user: 85 prev brb: 12584704 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 Array Update of 3 rows: tabn: 0 slot: 59(0x3b) flag: 0x2c lock: 0 ckix: 0 ncol: 12 nnew: 1 size: 0 KDO Op code: 21 row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01000c15 hdba: 0x01000c0a itli: 3 ispac: 0 maxfr: 4858 vect = 35 col 11: [ 2] c1 0b tabn: 0 slot: 60(0x3c) flag: 0x2c lock: 0 ckix: 0 ncol: 12 nnew: 1 size: 0 KDO Op code: 21 row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01000c15 hdba: 0x01000c0a itli: 3 ispac: 0 maxfr: 4858 vect = 35 col 11: [ 2] c1 09 tabn: 0 slot: 61(0x3d) flag: 0x2c lock: 0 ckix: 0 ncol: 12 nnew: 1 size: 0 KDO Op code: 21 row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x01000c15 hdba: 0x01000c0a itli: 3 ispac: 0 maxfr: 4858 vect = 35 col 11: [ 2] c1 07
The undo change contains the old values for the columns
The maximum number of rows updated in a single change appears to be 20. If more than 20 rows are updated in the same block, then multiple 20-row changes are created.