Kbase P104392: Error 210 during dbanalysis and a database scan shows database corruption.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  2/17/2009 |
|
Status: Verified
SYMPTOM(s):
Error 210 during proutil dbanalys
SYSTEM ERROR: Attempt to read block <number> which does not exist. (210)
proutil dbrpr database scan shows record errors
** Bad Frag <dbkey> for rec <dbkey> Err:1
FACT(s) (Environment):
Progress 9.x
OpenEdge 10.x
All Supported Operating Systems
OpenEdge Category: Database
CAUSE:
A hardware failure (controller card or harddisk fault usually) has caused physical database corruption.
FIX:
You have two options:
Option 1:
If you are able to restore a recent backup prior to when the corruption occurred, that would be the best option.
Option2:
Try to fix the current database.
Note that you will lose any records that are shown as being damaged, and if dbrpr also shows Bad Block errors then you can potentially lose up to 256 records per block if that block is a data block and not an index block. The number of records that you could potentially lose due to a corrupt data block would depend on what the Records Per Block value is for that database area (shown in the dbname.st file). There is often no way to determine whether a bad block is a data or index block.
To try to recover as much data from the corrupt database follow these steps:
1. Make sure you have a valid backup of your corrupted database. This is in case a mistake is made that damages the database further.
2. Truncate the bi file.
proutil <dbname> -C truncate bi
3. Run dbrpr and select to delete bad records and reformat bad blocks:
proutil <dbname> -C dbrpr | tee dbrpr.out
At the menu, choose these options:
1. Database Scan Menu
1. Report Bad Blocks
3. Reformat Bad Blocks
4. Report Bad Records
5. Delete Bad Records
A. Apply scan to all areas
G. GO
Scan Backward (Yes/No)? NO
Q. Quit
4. Run a full index rebuild. This is because you have deleted the bad records but they will still have corresponding index entries. Remember to create a multi-volume sort file if you require it.
proutil <dbname> -C idxbuild all -TB 24 -TM 32
5. The database should now be free of corrupt records, however you may have referential integrity problems (child records without parents etc). This is something that you will need to resolve manually.