Kbase P5390: Microsoft General protection fault occurs when trying to access database by Progress utilities
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  5/16/2005 |
|
Status: Unverified
FACT(s) (Environment):
Windows NT 32 Intel/Windows 2000
SYMPTOM(s):
Database fails to start with a GPF
Starting database fails with a General Protection Fault.
** This process terminated with exit code <number>. (8619)
All database utilities fail to access database with GPF
Scan of database using proutil dbname -C DBRPR reports that the database is corrupted
CAUSE:
Database corruption.
FIX:
Method 1: Restore the database from backup.
Method 2: If no valid database backup exists the corrupt database blocks can be removed from the database using the dbrpr scan utility. This approach will remove all data stored in the blocks that are deleted and cause database intergrity issues.
To remove bad blocks using dbrpr perform the following:
1. Operating System backup all the database files. Backup all the <dbname>.b* and <db>.d* files. A Progress backup (probkup) can be attempted but will probably fail due to the corruption.
2. Run "proutil <db> -C truncate bi". If this gives an error then you will need to add "-F" after "-C dbrpr" within the next command.
3. Run "proutil <db> -C dbrpr | tee dbrpr.out" The "| tee dbrpr.out" part of the above command is to save a copy of the output within the file "dbrpr.out". The following menu will be displayed:
DATABASE REPAIR MENU
--------------------
1. Database Scan Menu
2. Test One or More Indexes
3. Remove Bad Record Fragment
4. Dump Block
5. Load Block
6. Copy Bytes Between Files
7. Load RM Dump File
8. Reformat Block to a Free Block
Q. Quit
4. Select Option 1, The database scan menu
5. Selection Option 3. "Reformat Bad Blocks" and choose the option G - go.
6. Answer the question Scan Backward (Yes/No)? If you do not answer, the scan will be forward as recommended for better performance. The database will be scanned and the reformatted blocks will be reported.
7. When the scan is complete, Rebuild the chains for the Free Blocks (all reformatted blocks have been added here), for the RM Blocks and the Index Delete Blocks (you "lost" some blocks from these two chains). To do this perform an "idxbuild" or you use the options from within the Database Scan Menu. The options are:
7. Rebuild Free Chain (chain 0)
8. Rebuild RM Chain (chain 1)
9. Rebuild Index Delete Chain (chain 2)
Options #7, #8 and #9 may be selected at the same time as reformatting the bad blocks. You then get the screen:
DATABASE SCAN MENU
------------------
1. Report Bad Blocks
2. Repair Block Alignment
ON 3. Reformat Bad Blocks
4. Report Bad Records
5. Delete Bad Records
6. Dump Records to RM File
ON 7. Rebuild Free Chain (chain 0)
ON 8. Rebuild RM Chain (chain 1)
ON 9. Rebuild Index Delete Chain (chain 2)
G. GO
(Current Working Area: Schema Area)
Choice: g
Scan Backward (Yes/No)?
A good check of the physical and logical integrity of your data would be to dump all the tables and use an application specific load program. An application specific load program would prevent to have an order with missing order-lines or an order-line with no corresponding order for example.