Master block flags for troubleshooting damaged databases
- Last Updated: January 16, 2024
- 2 minute read
- OpenEdge
- Version 12.8
- Documentation
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:
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 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.
-
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
0x0band a binary value of0b1011. 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 orARGFORCE,NOINTEG,DBRESTOREfrom 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.