9.6. ORACLE RDBMS: .MSB-FILES
(%s.%s) violated” starts at position 0x1461 (from the file’s start) or at 0x61 (from the at the block’s start).
These numbers (0x44 and 0x61) are familiar somehow! We can clearly see them at the start of the block.
So, each 6-byte block is:
- 16-bit error number;
- 16-bit zero (maybe additional flags);
- 16-bit starting position of the text string within the current block.
Wecanquicklychecktheothervaluesandbesureourguessiscorrect. Andthereisalsothelast“dummy”
6-byte block with an error number of zero and starting position beyond the last error message’s last
character. Probably that’s how text message length is determined? We just enumerate 6-byte blocks to
find the error number we need, then we get the text string’s position, then we get the position of the text
string by looking at the next 6-byte block! This way we determine the string’s boundaries! This method
allows to save some space by not saving the text string’s size in the file!
It’s not possible to say it saves a lot of space, but it’s a clever trick.