Kbase P142387: Database crashes with corruption errors 10809 and 10560
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  23/02/2010 |
|
Status: Verified
SYMPTOM(s):
Database crashes with corruption errors 10809 and 10560
SYSTEM ERROR: rmlocate: Invalid RM block for area <area>, requested Dbkey and located Dbkey . (10809)
bmLockBuffer: Error occurred in area <num>, block number: <num>, extent<name>: . (10560)
Database scan shows a corrupt block with the following errors:
** Bad Frag 139649415 for rec 139649415 Err:2
**ERROR: Bad File Number: 0 Len:68
Machine has been rebooted and dbrpr still shows the errors.
FACT(s) (Environment):
All Supported Operating Systems
Progress 9.x
OpenEdge 10.x
CAUSE:
Database corruption has occurred and the block contains invalid information.
FIX:
Reboot the machine and re-run the scan. This is to determine whether the corruption is just in the memory / cache of the machine's hardware or whether there truly is database corruption on disk.
If dbrpr continues to report corruption then it will not possible to recover the data from the block. It is also not possible to determine whether the block is a data or index block, which means that some records may have been lost.
You can either:
1. Restore the database from backup. A Progress backup would have detected the corruption when backing up (It checks the block header of each block), but a non-Progress backup doesn't. Therefore, if the backup was taken with a non-Progress backup then you should first restore the backup into a temp area and scan it to ensure that it doesn't also contain corruption.
prorest <dbname> <backupDeviceOrFile>
2. Use dbrpr to fix the bad block using the following steps:
a) Truncate the bi file and start the dbrpr utility:
proutil <dbname> -C truncate bi
proutil <dbname> -C dbrpr | tee dbrpr.out
b) Select all of the following dbrpr menu options:
1. Database Scan Menu
3. Reformat Bad Blocks
5. Delete Bad Records
7. Rebuild Free Chain
8. Rebuild RM Chain
9. Rebuild Index Delete Chain
A. Apply scan to all areas
G. GO
Scan Backward (Yes/No)? No
c) When dbrpr has finished you will need to run a full index rebuild on the database because either index entries are missing (if it was a bad index block) or there are index entries pointing to records that no longer exist (if it was a bad data block).