Redo Level 11 - Table Operation (DML)【对change vector的一些字段有解释】

来源:互联网 发布:苹果6网络知识 编辑:程序博客网 时间:2024/06/05 02:48

Redo Level 11 - Table Operation (DML)

This level includes all DML operations performed on table data, including INSERT, UPDATE and DELETE. Operations include:

  • 11.2 - Insert Row Piece (IRP)
  • 11.3 - Delete Row Piece (DRP)
  • 11.4 - Select for Update
  • 11.5 - Update Row Piece (URP)
  • 11.11 - Array Insert
  • 11.12 - Array Delete (undo only)

These operations are described in more detail in the following sections. The full list of known operations in Oracle 10.2 is as follows:

 CodeMnemonicDescription11.1IURUndo11.2IRPInsert Row Piece11.3DRPDelete Row Piece11.4LKRLock Row11.5URPUpdate Row Piece11.6ORPOverflow Row Piece11.7MFC 11.8CFA 11.9CKI 11.10SKL 11.11QMIInsert Row Array11.12QMDDelete Row Array11.14DSC 11.16LMN 11.17LLB 11.1919Update Row Array11.20SHK 11.2121 

Each operation operates on a single table block.

11.1 - Undo table operation

This operation is the undo for 11.2 (IRP), 11.3 (DRP) and 11.5 (URP) (and possibly other level 11 operations)

11.2 - Insert Row Piece (IRP)

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 Disabledxtype: XA flags: 0x00000000  bdba: 0x01001af0  hdba: 0x01001aebitli: 2  ispac: 0  maxfr: 4858tabn: 0 slot: 1(0x1) size/delt: 19fb: --H-FL-- lb: 0x2  cc: 3null: ---col  0: [ 3]  46 45 52col  1: [ 7]  46 65 72 72 61 72 69col  2: [ 3]  49 54 41
KTB Redoop: 0x01  ver: 0x01op: 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(即 ITL index)  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:

  • 3 bytes for the row header
  • 4 bytes for column 0 (1 length byte and 3 data bytes)
  • 8 bytes for column 1 (1 length byte and 7 data bytes)
  • 4 bytes for column 2 (1 length byte and 3 data bytes)


fb: --H-FL-- lb: 0x2  cc: 3

fb is the flag byte which contains eight bit flags with the following values:

 FlagDescriptionKCluster keyCClustered rowHHead piece of rowDDeleted rowFFirst piece in rowLLast piece in rowPPrevious row piece existsNNext 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 redo:

CHANGE #4 TYP:0 CLS:28 AFN:2 DBA:0x008004f1 OBJ:4294967295 SCN:0x0000.00122119 SEQ:  1 OP:5.1ktudb redo: siz: 108 spc: 6734 flg: 0x0012 seq: 0x0151 rec: 0x0b            xid:  0x0006.010.000001b1ktubl redo: slt: 16 rci: 0 opc: 11.1 objn: 52432 objd: 52432 tsn: 4Undo type:  Regular undo        Begin trans    Last buffer split:  NoTemp Object:  NoTablespace Undo:  No             0x00000000  prev ctl uba: 0x008004f1.0151.0aprev ctl max cmt scn:  0x0000.00121033  prev tx cmt scn:  0x0000.00121034txn start scn:  0x0000.00000000  logon user: 59  prev brb: 0  prev bcl: 0 KDO undo record:KTB Redoop: 0x03  ver: 0x01op: ZKDO Op code: DRP row dependencies Disabled  xtype: XA flags: 0x00000000  bdba: 0x01001af0  hdba: 0x01001aebitli: 2  ispac: 0  maxfr: 4858tabn: 0 slot: 1(0x1)

11.3 - Delete Row Piece (DRP)

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.00123482itli: 2  flg: 2  scn: 0x0000.00123473KDO Op code: DRP row dependencies Disabledxtype: XA flags: 0x00000000  bdba: 0x01001af0  hdba: 0x01001aebitli: 2  ispac: 0  maxfr: 4858tabn: 0 slot: 1(0x1)
KTB Redoop: 0x011  ver: 0x01op: 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: 0x2axid:  0x0008.014.00000172ktubl redo: slt: 20 rci: 0 opc: 11.1 objn: 52432 objd: 52432 tsn: 4Undo type:  Regular undo        Begin trans    Last buffer split:  NoTemp Object:  NoTablespace Undo:  No0x00000000  prev ctl uba: 0x00800025.02bc.29prev ctl max cmt scn:  0x0000.0012205e  prev tx cmt scn:  0x0000.00122072txn start scn:  0x0000.00000000  logon user: 59  prev brb: 8388625  prev bcl: 0 KDO undo record:KTB Redoop: 0x04  ver: 0x01op: L  itl: xid:  0x0007.00f.0000013a uba: 0x0080012d.012a.1cflg: C---    lkc:  0     scn: 0x0000.00123473KDO Op code: IRP row dependencies Disabledxtype: XA flags: 0x00000000  bdba: 0x01001af0  hdba: 0x01001aebitli: 2  ispac: 0  maxfr: 4858tabn: 0 slot: 1(0x1) size/delt: 19fb: --H-FL-- lb: 0x0  cc: 3null: ---col  0: [ 3]  46 45 52col  1: [ 7]  46 65 72 72 61 72 69col  2: [ 3]  49 54 41

11.4 - Select for Update

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.00123aabKDO Op code: LKR row dependencies Disabledxtype: XA flags: 0x00000000  bdba: 0x01001af0  hdba: 0x01001aebitli: 1  ispac: 0  maxfr: 4858tabn: 0 slot: 1 to: 1
KTB Redoop: 0x011  ver: 0x01op: 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.1ktudb redo: siz: 132 spc: 4892 flg: 0x0012 seq: 0x0105 rec: 0x0e            xid:  0x0004.01e.00000145ktubl redo: slt: 30 rci: 0 opc: 11.1 objn: 52432 objd: 52432 tsn: 4Undo type:  Regular undo        Begin trans    Last buffer split:  NoTemp Object:  NoTablespace Undo:  No             0x00000000  prev ctl uba: 0x00800725.0105.0dprev ctl max cmt scn:  0x0000.00122231  prev tx cmt scn:  0x0000.00122236txn start scn:  0x0000.00000000  logon user: 59  prev brb: 8388667  prev bcl: 0 KDO undo record:KTB Redoop: 0x04  ver: 0x01op: L  itl: xid:  0x0001.003.00000155 uba: 0x00800688.016a.05                      flg: C---    lkc:  0     scn: 0x0000.00123a9aKDO Op code: LKR row dependencies Disabled  xtype: XA flags: 0x00000000  bdba: 0x01001af0  hdba: 0x01001aebitli: 1  ispac: 0  maxfr: 4858tabn: 0 slot: 1 to: 0

11.5 - Update Row Piece (URP)

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.00124511KDO Op code: URP row dependencies Disabledxtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x01001af0  hdba: 0x01001aebitli: 1  ispac: 0  maxfr: 4858tabn: 0 slot: 5(0x5) flag: 0x2c lock: 1 ckix: 191ncol: 3 nnew: 1 size: 0Vector content:col  2: [ 3]  4f 53 54
KTB Redoop: 0x011  ver: 0x01op: 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: 0x0exid:  0x0001.012.00000154ktubl redo: slt: 18 rci: 0 opc: 11.1 objn: 52432 objd: 52432 tsn: 4Undo type:  Regular undo        Begin trans    Last buffer split:  NoTemp Object:  NoTablespace Undo:  No0x00000000  prev ctl uba: 0x00800687.016a.0dprev ctl max cmt scn:  0x0000.00122c72  prev tx cmt scn:  0x0000.00122c86txn start scn:  0x0000.00124511  logon user: 59  prev brb: 8390264  prev bcl: 0 KDO undo record:KTB Redoop: 0x04  ver: 0x01op: L  itl: xid:  0x0009.005.00000195 uba: 0x0080019a.0187.19flg: C---    lkc:  0     scn: 0x0000.00124473KDO Op code: URP row dependencies Disabledxtype: XAxtype KDO_KDOM2 flags: 0x00000080  bdba: 0x01001af0  hdba: 0x01001aebitli: 1  ispac: 0  maxfr: 4858tabn: 0 slot: 5(0x5) flag: 0x2c lock: 0 ckix: 191ncol: 3 nnew: 1 size: 0Vector content:col  2: [ 3]  47 42 52

11.11 - Array Insert

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.11KTB Redoop: 0x01  ver: 0x01op: F  xid:  0x0007.01c.0000014c    uba: 0x00800fc7.012f.14KDO Op code: QMI row dependencies Disabledxtype: XA flags: 0x00000000  bdba: 0x01001b14  hdba: 0x01001b13itli: 2  ispac: 0  maxfr: 4858tabn: 0 lock: 2 nrow: 3slot[0]: 2tl: 15 fb: --H-FL-- lb: 0x0  cc: 3col  0: [ 3]  42 4d 57col  1: [ 3]  42 4d 57col  2: [ 3]  47 45 52slot[1]: 3tl: 20 fb: --H-FL-- lb: 0x0  cc: 3col  0: [ 3]  57 49 4ccol  1: [ 8]  57 69 6c 6c 69 61 6d 73col  2: [ 3]  47 42 52slot[2]: 4tl: 19 fb: --H-FL-- lb: 0x0  cc: 3col  0: [ 3]  52 45 4ecol  1: [ 7]  52 65 6e 61 75 6c 74col  2: [ 3]  52 45 4e
KTB Redoop: 0x01  ver: 0x01op: 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.1ktudb redo: siz: 140 spc: 5916 flg: 0x0012 seq: 0x012f rec: 0x14            xid:  0x0007.01c.0000014cktubl redo: slt: 28 rci: 0 opc: 11.1 objn: 52798 objd: 52798 tsn: 4Undo type:  Regular undo        Begin trans    Last buffer split:  NoTemp Object:  NoTablespace Undo:  No             0x00000000  prev ctl uba: 0x00800fc7.012f.05prev ctl max cmt scn:  0x0000.0015760e  prev tx cmt scn:  0x0000.00157655txn start scn:  0xffff.ffffffff  logon user: 59  prev brb: 8392639  prev bcl: 0 KDO undo record:KTB Redoop: 0x03  ver: 0x01op: ZKDO Op code: QMD row dependencies Disabled  xtype: XA flags: 0x00000000  bdba: 0x01001b14  hdba: 0x01001b13itli: 2  ispac: 0  maxfr: 4858tabn: 0 lock: 0 nrow: 3slot[0]: 2slot[1]: 3slot[2]: 4

11.12 - Array Delete (undo only)

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.


参见:http://www.juliandyke.com/Internals/Redo/Redo11.html

0 0
原创粉丝点击