On 16-Dec-2011 13:36 , Dan Kimmel wrote:
SQL0007 Reason code 9 - Index is currently held or is not valid
Following
CPF5090 The unique keyed access path of member WORKP00004 file
... cannot be maintained.
What does that mean?
SQL7008 rc9 or sqlcode -7008 I presume? Anyhow...
The CPF5090 indicates that a unique access path [keyed UNIQUE logical
file <¿or primary or unique key?>] was previously invalidated; then that
the rebuild activity was either placed on hold [held via iNav or the
cmdline version of EDTRBDAP "Edit Rebuild of Access Paths"] or that the
AccPth still has not been rebuilt. I do not recall if there might also
be an EDTRBDCST or some such if the unique key were a constraint instead.?
There is a [presumably still, and possibly problematic] feature
which, for each incident, resignals the "rebuild event" to the QDBSRV01
job to have that job forward the index rebuild work to one of the
runpty-52 QDBSRV## jobs. That should ensure the entry [re]appears on
the EdtRbdAP screen.
In newer releases there is more tracking [beyond what was previously
only available in the VLIC logs; those can be saved to be sure details
about the origin remain] which diagnose the origin of the invalidate
request. The typical case is restore of the dataspace, without the
owning logical file being restored on the same RSTxxx request. I do not
recall what the OS manifests visibly in that regard, but the iNav
interface and the underlying support [some database file in library
QRECOVERY] has some more details recorded. There may also be
information in the history log. I do not recall the message range to
search. There may also be information in the QDBSRV01 joblog and\or any
QDBSRV## joblog which attempted to rebuild; the messages sent to the
QSYSOPR and\or QHST would come from those jobs.
Reviewing the logging for the file activity and reviewing any errors
in the joblog [or errors sent to the history by\]of a job that "did
something" to that file might give insight as to the origin of the
invalidation. The review of the history for "access path" related
messaging and information in the joblogs of the jobs that rebuild the
access paths might also give insight.
The most direct resolution to the CPF5090 is to OPNDBF ACCPTH(*FILE)
of the file member which owns the unique access path; the open performed
in a job of the desire Work Management parameters, which may be more
appropriate that the default runpty-52 if the OS DB2 takes on the work;
i.e. lower priority than batch.
FWiW: The problem can persist in the unfortunate [and AFaIK should
never transpire, excepting cases of defects] situation whereby duplicate
key values correctly cause the rebuild of the unique key to fail. In
that case the file might best be "moved" to allow for further
investigation, and a new copy made without the duplicates, and the
application restarted on the new version of the file; of course enabling
investigation is a "would be nice for the thought of investigating the
origin and possible matches to existing defects to allow finding
preventives or to assist finding a new defect, but not reasonable" so
just deleting the bad rows that are causing duplicates would be deleted
and life goes on... but still reporting the errors.
Regards, Chuck
As an Amazon Associate we earn from qualifying purchases.