Consultor Eletrônico



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.