Salesforce

Index rebuild fails with error 3191 and 450

« Go Back

Information

 
TitleIndex rebuild fails with error 3191 and 450
URL Name000031066
Article Number000137956
EnvironmentOpenEdge
9.x,10.x,11.0
All Supported Operating Systems
Question/Problem Description
Index rebuild fails with error 3191 and 450 in the database log.
Index rebuild fails with error 3191 and 450 after hardware failure.
Steps to Reproduce
Clarifying Information
Dbrpr has error Bad File Number.
Dbrpr has error Scan past last field.


Error MessageIn the Database Log
SYSTEM ERROR: Failed to extract field <field-num> from <file-name> record (table <table-num>) with recid <RECID>. (3191))
SYSTEM ERROR: Cannot read field from record, not enough fields. (450).

Dbrpr Output
**ERROR: Bad File Number: <> Len:<>**ERROR: Scan past last field.
Defect Number
Enhancement Number
Cause
 There is corruption in the database due to a hardware issue.
Resolution
Fix the hardware issue and follow the below steps to delete and recreate the bad  records

1) Record all recid values from error 3191.

2) Use the following code to find out the field name referred by field-num on error 450 or 3191.

FIND _file WHERE _file-num = "<table-num>". 
FOR EACH _field OF _file where _field-rpos = <field-num-value>:
DISP _file._file-name _field._field-name.
END.

3) For each recid use the following code to export the fields that are not corrupted, by changing the <field-name> below to the ones found in step 2 .

OUTPUT TO VALUE(string(<recid>) + ".txt").
FIND <table-name> WHERE RECID(<table-name>) = <recid>.
EXPORT <table-name> EXCEPT <field-name>.

4) You can now delete the bad records using the command:

proutil dbname -C idxfix

You will be presented with a menu, select these options:

Menu Item 6. Delete one record and it's index entries.
It will then ask you to "Type the recid to delete."
It will then ask you to "Type the area for the recid(s)."

Repeat for each recid that is corrupt.
Workaround
Notes
Keyword Phrase
Last Modified Date7/5/2012 12:52 PM

Powered by