RL note types

Posted by Rob Fitzpatrick on 20-Nov-2018 02:32

Does anyone have an up-to-date list of recovery log note types and their descriptions?  The most recent list I have is from George, containing 81 note types; it's several years old now.

I just ran an AI scan verbose on an AI extent from a DB where I was adding TDE policies and encrypting data.  I see several note types I haven't seen before (e.g. RL_CACHE, RL_ENC_UPDATE, RL_ENC_UPDATE_END, RL_FLUSH).  To be clear, I'm not suggesting that these note types are new to TDE.  I've just never scanned this kind of activity before.

Thanks in advance.

Posted by George Potemkin on 20-Nov-2018 05:35

The list of recovery log note types but some of them without description:

00 RL_NULL /* no-op */
01 RL_IXMSTR /* new index master */
02 RL_IXINS /* insert index entry. Removed in V10 */
03 RL_IXREM /* remove index entry. Removed in V10 */
04 RL_IXSP1 /* 1st note of index block split. Removed in V10 */
05 RL_IXSP2 /* 2nd note of index block split. Removed in V10 */
06 RL_IXDBLK /* delete entire index block */
07 RL_IXIBLK /* install entire block */
08 RL_BKREPL /* generic string replace */
09 RL_BKFRM /* master block changes for frrem */
10 RL_BKFRB /* database block changes for frrem*/
11 RL_BKFAM /* master block changes for fradd */
12 RL_BKFAB /* database block changes for fradd */
13 RL_INMEM /* in memory table note: compressed trantab. INMEM note is a construct that takes a snapshot of active transactions in shared memory at the switch of a new AI cluster. We then undertake a sanity check on roll forward by rebuilding the image in shared memory to compare the steps taken against the INMEM notes. (P24378). The location of the last note the database engine wrote is stored in both the master block, recovery control structures, and ai/bi notes. It gets written to the INMEM and AIEXT notes whenever we close a bicluster. (P29574) */
14 RL_TBGN /* transaction begin note: log+phy */
15 RL_TEND /* transaction end note: log+phy */
Added after V6.3C (already exist in V8.0A)
16 RL_PUNDO /* backout notes: physical rollback note. Removed in V10 */
17 RL_PBKOUT /* backout notes: start phys. backout marker */
18 RL_PBKEND /* backout notes: completed phys. backout marker */
19 RL_LRA /* backout notes: Jump note for log. backout. Removed in V10 */
20 RL_IXGEN /* logical index entry insertion. Removed in V10 */
21 RL_IXDEL /* logical index entry deletion */
The RL_IXDEL note is a logical operation to delete an index entry. We can add and delete index entries but not update them. When key fields are updated, the original index entry is deleted and a new one is inserted in a different place in the index. If the index is unique, then the deleted entry is replaced by a index entry reservation or placeholder so that another transaction cannot take the spot and prevent the first transaction from being able to roll back.

22 RL_IXFILC /* create a new index file */
23 RL_IXKIL /* remove an index file */
24 RL_IXUKL /* unkill an index file */
25 RL_RMCR /* create a record (fragment) */
26 RL_RMDEL /* delete a record (fragment) */
27 RL_JMP /* jump note: link togthr notes in same xaction */
28 RL_XTDB /* physically extend the .db */
29 RL_FILC /* add a fil to the database. Removed in V10 */
30 RL_LSTMOD /* change the mb_lstmod field */ 36 bytes
32 RL_RMNXTF /* Insert next fragment pointer in rm */
33 RL_BK2EM /* mstr block top RMCHN to end chain */
34 RL_BK2EB /* DB blk top RMCHN to end chain */
35 RL_BKMBOT /* mstr blk add blk to bottom RMCHN*/
36 RL_BKBBOT /* DB blk add blk to bottom RMCHN*/
37 RL_RMCHG /* change a record (fragement) */
38 RL_RCOMM /* two-phase-commit note: Ready to commit note. */
39 RL_TABRT /* two-phase-commit note: Abort transaction note. */
40 RL_CTEND /* two-phase-commit note: Coordinator's TEND */
41 RL_RTEND /* two-phase-commit note: 2phase recovery TEND */
42 RL_CXINS /* Compressed index note: insert index entry */
43 RL_CXREM /* Compressed index note: remove index entry */
44 RL_CXSP1 /* Compressed index note: 1st note of index block split */
45 RL_CXSP2 /* Compressed index note: 2nd note of index block split */
46 RL_CXROOT /* Compressed index note: TEMPORARY to convert old root. Removed in V10 */
47 RL_AIEXT /* AI extent switch note. RL_AIEXT notes have timestamps inside (kbase). AIEXT note is recorded at the switch of ai extent where the current ai extent note number is recorded and compared against the previous one. (P24378) The location of the last note the database engine wrote is stored in both the master block, recovery control structures, and ai/bi notes. It gets written to the INMEM and AIEXT notes whenever we close a bicluster. (P29574) */
48 RL_SEASN /* Sequence number note: assign sequence no */
49 RL_SEINC /* Sequence number note: increment current value */
50 RL_SESET /* Sequence number note: set current value */
51 RL_SEADD /* Sequence number note: add sequence */
52 RL_SEDEL /* Sequence number note: delete sequence */
53 RL_SEUPD /* Sequence number note: update sequence */
54 RL_RCTAB /* Note for logging table of tx's in ready to commit state: Ready to commit tx table */
55 RL_BKFORMAT /* Notes for allocating a new database block */
56 RL_BKMAKE /* -/- */
57 RL_BKHWM /* -/- */
Added in V9.0A
58 RL_BKAREA_ADD /* Notes for storage areas and extents */
59 RL_BKEXTENT_CREATE /* Create/write extent block */
60 RL_BKWRITE_AREA_BLOCK /* write area block */
61 RL_BKWRITE_OBJECT_BLOCK /* write object block */
62 RL_TMSAVE /* Notes for save points within transactions: log+phy */
63 RL_OBJECT_CREATE /* object was added to om cache */
64 RL_OBJECT_UPDATE /* and object was updated */
65 RL_BKAREA_DELETE /* More notes for storage areas and extents */
66 RL_BKEXTENT_DELETE /* -/- */
67 RL_IDXBLOCK_COPY /* -/- */
68 RL_IDXBLOCK_UNCOPY /* -/- */
69 RL_CXCOMPACT_LEFT /* move entries to left blk */
70 RL_CXCOMPACT_RIGHT /* adj entries to lft in rt blk */
71 RL_CXTEMPROOT /* Note for creation of temporary indices for use by dbmgr: logical create temp idx file */
72 RL_TL_ON /* enable 2pc trx logging */
Added after V9.1C
73 RL_GTBGN /* Global Transactions */
74 RL_GXID /* -/- */
75 RL_GEND /* -/- */
76 RL_GJOIN /* -/- */
77 RL_GRESUME /* -/- */
78 RL_GSUSPEND /* -/- */
79 RL_GPREP /* -/- */
80 RL_GTEND /* -/- */
Added in V10.0A
81 RL_LOGOP_START /* logical operation start */
82 RL_LOGOP_END /* logical operation end */
The RL_LOGOP_START and RL_LOGOP_END notes are "parentheses" that enclose the physical operations that compose a logical operation. We use them so that we know where the start and end are. For example, we might have a logical operation "insert the key "foo" into index 44. that may require splitting a block to make room for the new entry and the split in turn requires removing a block from the free chain and inserting the new block into the b-tree and updating the original block's parent by inserting an entry for the new block. So the single logical operation can be composed of many physical ones.

83 RL_OLIST_ADD
84 RL_OLIST_DEL
85 RL_CLIST_ADD
86 RL_CLIST_DEL
87 RL_BKOBJHWM
88 RL_TBLLK
89 RL_BKCHAIN
90 RL_BKCHAIN_NEXT
91 RL_BKCHAIN_PREV
92 RL_CLUSTER_OWNER
93 RL_COMMENT
Added in V10.1B 
94 RL_SEQTBL
95 RL_SEQENB64      /* enableseq64 - Enable Large Keys */
96 RL_FMABMAP
97 RL_BKINDEXFORMAT
Added in V10.2B (introduction of Transparent Data Encryption)
98 RL_CACHE
99 RL_ENC_UPDATE
100 RL_INFLIGHT_ROWID
101 RL_FLUSH
102 RL_SPARE_9
103 RL_SPARE_10
104 RL_ENC_MANAGE
105 RL_ENC_UPDATE_END
Added in V11.1 (introduction of Multi-Tenancy)
106 RL_GROUP_CREATE
107 RL_GROUP_UPDATE
108 RL_GROUP_UPDATE
109 RL_IXACT
110 RL_CXCOPYB

All Replies

Posted by George Potemkin on 20-Nov-2018 05:35

The list of recovery log note types but some of them without description:

00 RL_NULL /* no-op */
01 RL_IXMSTR /* new index master */
02 RL_IXINS /* insert index entry. Removed in V10 */
03 RL_IXREM /* remove index entry. Removed in V10 */
04 RL_IXSP1 /* 1st note of index block split. Removed in V10 */
05 RL_IXSP2 /* 2nd note of index block split. Removed in V10 */
06 RL_IXDBLK /* delete entire index block */
07 RL_IXIBLK /* install entire block */
08 RL_BKREPL /* generic string replace */
09 RL_BKFRM /* master block changes for frrem */
10 RL_BKFRB /* database block changes for frrem*/
11 RL_BKFAM /* master block changes for fradd */
12 RL_BKFAB /* database block changes for fradd */
13 RL_INMEM /* in memory table note: compressed trantab. INMEM note is a construct that takes a snapshot of active transactions in shared memory at the switch of a new AI cluster. We then undertake a sanity check on roll forward by rebuilding the image in shared memory to compare the steps taken against the INMEM notes. (P24378). The location of the last note the database engine wrote is stored in both the master block, recovery control structures, and ai/bi notes. It gets written to the INMEM and AIEXT notes whenever we close a bicluster. (P29574) */
14 RL_TBGN /* transaction begin note: log+phy */
15 RL_TEND /* transaction end note: log+phy */
Added after V6.3C (already exist in V8.0A)
16 RL_PUNDO /* backout notes: physical rollback note. Removed in V10 */
17 RL_PBKOUT /* backout notes: start phys. backout marker */
18 RL_PBKEND /* backout notes: completed phys. backout marker */
19 RL_LRA /* backout notes: Jump note for log. backout. Removed in V10 */
20 RL_IXGEN /* logical index entry insertion. Removed in V10 */
21 RL_IXDEL /* logical index entry deletion */
The RL_IXDEL note is a logical operation to delete an index entry. We can add and delete index entries but not update them. When key fields are updated, the original index entry is deleted and a new one is inserted in a different place in the index. If the index is unique, then the deleted entry is replaced by a index entry reservation or placeholder so that another transaction cannot take the spot and prevent the first transaction from being able to roll back.

22 RL_IXFILC /* create a new index file */
23 RL_IXKIL /* remove an index file */
24 RL_IXUKL /* unkill an index file */
25 RL_RMCR /* create a record (fragment) */
26 RL_RMDEL /* delete a record (fragment) */
27 RL_JMP /* jump note: link togthr notes in same xaction */
28 RL_XTDB /* physically extend the .db */
29 RL_FILC /* add a fil to the database. Removed in V10 */
30 RL_LSTMOD /* change the mb_lstmod field */ 36 bytes
32 RL_RMNXTF /* Insert next fragment pointer in rm */
33 RL_BK2EM /* mstr block top RMCHN to end chain */
34 RL_BK2EB /* DB blk top RMCHN to end chain */
35 RL_BKMBOT /* mstr blk add blk to bottom RMCHN*/
36 RL_BKBBOT /* DB blk add blk to bottom RMCHN*/
37 RL_RMCHG /* change a record (fragement) */
38 RL_RCOMM /* two-phase-commit note: Ready to commit note. */
39 RL_TABRT /* two-phase-commit note: Abort transaction note. */
40 RL_CTEND /* two-phase-commit note: Coordinator's TEND */
41 RL_RTEND /* two-phase-commit note: 2phase recovery TEND */
42 RL_CXINS /* Compressed index note: insert index entry */
43 RL_CXREM /* Compressed index note: remove index entry */
44 RL_CXSP1 /* Compressed index note: 1st note of index block split */
45 RL_CXSP2 /* Compressed index note: 2nd note of index block split */
46 RL_CXROOT /* Compressed index note: TEMPORARY to convert old root. Removed in V10 */
47 RL_AIEXT /* AI extent switch note. RL_AIEXT notes have timestamps inside (kbase). AIEXT note is recorded at the switch of ai extent where the current ai extent note number is recorded and compared against the previous one. (P24378) The location of the last note the database engine wrote is stored in both the master block, recovery control structures, and ai/bi notes. It gets written to the INMEM and AIEXT notes whenever we close a bicluster. (P29574) */
48 RL_SEASN /* Sequence number note: assign sequence no */
49 RL_SEINC /* Sequence number note: increment current value */
50 RL_SESET /* Sequence number note: set current value */
51 RL_SEADD /* Sequence number note: add sequence */
52 RL_SEDEL /* Sequence number note: delete sequence */
53 RL_SEUPD /* Sequence number note: update sequence */
54 RL_RCTAB /* Note for logging table of tx's in ready to commit state: Ready to commit tx table */
55 RL_BKFORMAT /* Notes for allocating a new database block */
56 RL_BKMAKE /* -/- */
57 RL_BKHWM /* -/- */
Added in V9.0A
58 RL_BKAREA_ADD /* Notes for storage areas and extents */
59 RL_BKEXTENT_CREATE /* Create/write extent block */
60 RL_BKWRITE_AREA_BLOCK /* write area block */
61 RL_BKWRITE_OBJECT_BLOCK /* write object block */
62 RL_TMSAVE /* Notes for save points within transactions: log+phy */
63 RL_OBJECT_CREATE /* object was added to om cache */
64 RL_OBJECT_UPDATE /* and object was updated */
65 RL_BKAREA_DELETE /* More notes for storage areas and extents */
66 RL_BKEXTENT_DELETE /* -/- */
67 RL_IDXBLOCK_COPY /* -/- */
68 RL_IDXBLOCK_UNCOPY /* -/- */
69 RL_CXCOMPACT_LEFT /* move entries to left blk */
70 RL_CXCOMPACT_RIGHT /* adj entries to lft in rt blk */
71 RL_CXTEMPROOT /* Note for creation of temporary indices for use by dbmgr: logical create temp idx file */
72 RL_TL_ON /* enable 2pc trx logging */
Added after V9.1C
73 RL_GTBGN /* Global Transactions */
74 RL_GXID /* -/- */
75 RL_GEND /* -/- */
76 RL_GJOIN /* -/- */
77 RL_GRESUME /* -/- */
78 RL_GSUSPEND /* -/- */
79 RL_GPREP /* -/- */
80 RL_GTEND /* -/- */
Added in V10.0A
81 RL_LOGOP_START /* logical operation start */
82 RL_LOGOP_END /* logical operation end */
The RL_LOGOP_START and RL_LOGOP_END notes are "parentheses" that enclose the physical operations that compose a logical operation. We use them so that we know where the start and end are. For example, we might have a logical operation "insert the key "foo" into index 44. that may require splitting a block to make room for the new entry and the split in turn requires removing a block from the free chain and inserting the new block into the b-tree and updating the original block's parent by inserting an entry for the new block. So the single logical operation can be composed of many physical ones.

83 RL_OLIST_ADD
84 RL_OLIST_DEL
85 RL_CLIST_ADD
86 RL_CLIST_DEL
87 RL_BKOBJHWM
88 RL_TBLLK
89 RL_BKCHAIN
90 RL_BKCHAIN_NEXT
91 RL_BKCHAIN_PREV
92 RL_CLUSTER_OWNER
93 RL_COMMENT
Added in V10.1B 
94 RL_SEQTBL
95 RL_SEQENB64      /* enableseq64 - Enable Large Keys */
96 RL_FMABMAP
97 RL_BKINDEXFORMAT
Added in V10.2B (introduction of Transparent Data Encryption)
98 RL_CACHE
99 RL_ENC_UPDATE
100 RL_INFLIGHT_ROWID
101 RL_FLUSH
102 RL_SPARE_9
103 RL_SPARE_10
104 RL_ENC_MANAGE
105 RL_ENC_UPDATE_END
Added in V11.1 (introduction of Multi-Tenancy)
106 RL_GROUP_CREATE
107 RL_GROUP_UPDATE
108 RL_GROUP_UPDATE
109 RL_IXACT
110 RL_CXCOPYB

This thread is closed