Kbase P46320: Data corruption causes load from delta df to gpf
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  5/9/2006 |
|
Status: Unverified
SYMPTOM(s):
Loading delta definition is GPFing
Happens only for a specific database
Export data definitions works fine
Exporting data get errors 450 and 3191
SYSTEM ERROR: Cannot read field <field-num> from record, not enough fields. (450)
SYSTEM ERROR: Failed to extract field <field-num> from <file-name> record (table <table-num>) with recid <RECID>. (3191)
CAUSE:
Data corruption
FIX:
You will need to delete, and re-create if possible each corrupt record. You can attempt to dump each corrupt record's fields so that you can get as much information as possible from each record.
1) Record all recid values from error 3191.
2) Use the following code to find out the field name refered 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.
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.
5) Once this is complete, you can then proceed to re-create your records using the data obtained earlier on step 3.