Kbase P150819: Getting "System Error: Index couldn't find key RECID (8783)" messages when running idxcheck
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/27/2009 |
|
Status: Verified
SYMPTOM(s):
Getting "System Error: Index <num> couldn't find key <key> RECID <num> (8783)" messages when running idxcheck
SYSTEM ERROR: Index<index-num> (<owner-name>.<table-name>, <index-name>): couldn't find key <key> RECID <DBKEY>. (8783)
Running the proutil utility with the idxcheck option: proutil <dbname> -C idxcheck.
Running the dbtool utility and selecting the Record Validation option with the table listed in the (8783) error did not report any errors: dbtool <dbname>.
FACT(s) (Environment):
IBM AIX
OpenEdge 10.1C03 Service Pack
CAUSE:
This message indicates that there are records in a table that do not have matching index entries. The idxcheck option of the proutil utility looks for relational inconsistencies. For each record in a table, it will construct a key for each index selected to check, and then attempt to find the index entry with that key. If it cannot find a matching index entry, it will generate an (8783) message.
FIX:
There are two actions that you can take at this point - either delete the record and index entries associated with that record, or fix the index entries for that record. You would choose the former only if after retrieving the record using the RECID, you found that it was not logically consistent or no longer needed in that table.
To delete the record and its associated index entries you would run idxfix (online or offline), and do the following:
proutil <dbname> -C idxfix
Choose option 6. Delete one record and its index entries
Type in the RECID to delete
Type in the area number the RECID is a part of
Answer y to the "Is this correct?" query
To fix the index entries for a record, you would run idxfix (online or offline, and do the following:
proutil <dbname> -C idxfix
Choose option 1. Scan records for missing index entries
Choose option T to fix indexes by table
Choose the option number corresponding to the table the record is in
Choose G to Go, indicating that you are done selecting tables
Choose A for All Indexes
Choose G to Go
Answer y to the "Is this correct?" query
Answer y to the "Fix indexes on Scan. Is this correct?" query
Type in the RECID of the record to start the scan at
Type a second RECID to use as an endpoint of the scan or hit return to indicate just the one RECID
Type in the area number the RECID is a part of
Answer y to the "Is this correct?" query
Once the scan and fix are complete, you will be prompted to enter another RECID range, or you can choose the Q option to quit the utility.
Unlike idxbuild, an idxfix scan and fix is not an all or nothing operation. If the utility is interrupted, only the last incomplete index modification is undone, and the utility can be started again from where it was interrupted.