The _MstrBlk-Integrity and _MstrBlk-Tainted fields in the _MstrBlk VST, contain flags that may help you analyze and address database incidents before recovery. These flags are bit-field indicators that report details about the state of the database.

To interpret the meaning of the bit-field value from the enabled bits in the reported value, see the following table:

Table 1. Master Block Flag Values
Name reported by Database Repair (dbrpr) Enabled Bit Value _MstrBlk-tainted VST field (mb_tainted) _MstrBlk-integrity VST field (mb_flags) Action
ARGFORCE 1 1 Currently/previously - -F option was used to skip crash recovery
NOINTEG 2 2 Crashed with... Is running with... -i, no integrity option
NONRAW 3 4 Crashed with... Is running with... -r, buffered BI write I/O
DBRESTORE 4 8 Database used after crash in... - Database restore or restriction operation
Spare 5 16 - - Not in use.
DBIXBUILD 6 32 Indexes not rebuilt yet after... - Database collation table change
DBROLL_NOINTEG 7 64 - Rolling forward with... -i, no integrity option
DBROLL_PARTIAL 8 128 - Incomplete operation...

Last roll forward used an incomplete AI file.

Must perform a roll forward retry with a complete AI file.

DBADD_ONLINE 9 256 Any of bits 1-2 enabled and... Incomplete operation... PROSTRCT ADDONLINE. Cleared on success.
DBVSTS_UPDATED 10 512 Any of bits 1-2 enabled and... Has performed operation... VSTs have been updated for 64-bits in 10.1B
DBSEQ64_ENABLED 11 1024 - N/A after releases OE 12.0+...

64-bit sequences enabled. Only for releases prior to

OpenEdge 12.0

ENABLEAI_ONLINE 12 2048 - Incomplete operation... Enable AI online
DBROLL_STARTED 13 4096 - Incomplete operation...

AI roll forward with database locked (roll forward

oplock)

DBREDO_CLEAN 14 8192 - At database close... Successful redo of recovery data
DBSKIP_RECOVER 15 16384 - At database close...

No active transactions exist. Recovery can be skipped on database

restart.

DBKS_REBIND 16 32768 Keystore rebind required -

Run PROCOPY or PROREST with a new instance.

KeyStore rebind required.

The _MstrBlk-integrity flags indicate that some database operations are running because the database was started with an option that can affect the database recovery and integrity. Some flags prevent the database from entering an operational state, whereas other flags are simply database state flags with no adverse side effects. For example, when starting the database with the -r option, this flag is set after the first database operation.

If the database fails with outstanding transactions, the _MstrBlk-integrity flags are added to the

_MstrBlk-tainted flags when required for integrity. They remain there until the database can be successfully recovered.

Although many combinations of the listed values may never be reported together, all combinations are possible. You can interpret the meaning of the bit-field value from the enabled bits in the reported values.

There are many ways to perform this evaluation, such as:
  • You can convert the reported decimal or hex value using a calculator that displays in binary. Then, starting from the right-most bit position, identify which bits are enabled in the field value. Finally, match those enabled bits to Table 1: Master Block Flag Values.

    For example, a value reported with decimal value 11 has a hex value of 0x0b and a binary value of 0b1011. Evaluating the binary value from right to left (lowest to highest order) the bits 1, 2 and 4 are enabled, which equates to values 1, 2 and 8 or ARGFORCE, NOINTEG, DBRESTORE from Table 1: Master Block Flag Values.

  • Another approach is to use an ABL program such as the following, which displays the associated name when you enter the provided code:
    define variable numIn as integer.
    
    define variable i as integer initial 1. 
    define variable mbtString as character.
    define variable mbtTable as character extent 16 initial 
    	["ARGFORCE",	"NOINTEG",	"NONRAW",  "DBRESTORE",
    	 "DBBACKUP",	"DBIDXBUILD",	"DBROLL_NOINTEG", "DBROLL_PARTIAL", 
    	 "DBADD_ONLINE",	"DBVSTS_UPDATED", "Spare",	"ENABLEAI_ONLINE", 
    	 "DBROLL_STARTED", "DBREDO_CLEAN",	"DBSKIP_RECOVER", "DBKS_REBIND" ].
    	update numIn.
    	do i=1 to EXTENT(mbtTable):
    	if (get-bits(numIn, i, 1) = 1) then
    		mbtString = mbtString + " " + mbtTable[i].
    	end.
    	display mbtString format "x(72)" label "Val" with side-labels.