How to see that an object is damaged - IBM AS400

This is a discussion on How to see that an object is damaged - IBM AS400 ; A developer reported that a file is damaged. He
obviously saw something in a job that indicated the
object is damaged, but I can't see any indication of
damage using any of the object manipulation commands
that I know, e.g. ...

How to see that an object is damaged

A developer reported that a file is damaged. He
obviously saw something in a job that indicated the
object is damaged, but I can't see any indication of
damage using any of the object manipulation commands
that I know, e.g. DSPOBJD.

Re: How to see that an object is damaged

il 04/04/2007 2.09, Scrive Jonathan Ball 40596480:
> A developer reported that a file is damaged. He obviously saw something
> in a job that indicated the object is damaged, but I can't see any
> indication of damage using any of the object manipulation commands that
> I know, e.g. DSPOBJD.
The safest way to see if an object is dabaged is saving it. In
particular, speeking of a *FILE object, the damage could be inside a
member or in the access path, thus with dspobjd you don't see the damage.

Re: How to see that an object is damaged

To be able to see if any objects are damaged, run this:
SBMJOB CMD(DSPOBJD OBJ(*ALL/*ALL) OBJTYPE(*ALL) OUTPUT(*OUTFILE)
OUTFILE(QGPL/DSPOBJD)) JOB(DSPOBJD) JOBQ(QTXTSRCH)

Then in SQL (STRSQL or WRKDBF or iSeries Navigator, Databases,
right-click Run SQL Scripts) after the above job has finished, do this:
SELECT * FROM QGPL/DSPOBJD WHERE ODOBDM <> '0'

This will list all damaged objects.

Off topic, but useful, to be able to see all objects by size in
descending order, do this:
SELECT ODLBNM,ODOBNM,ODOBTP,ODOBSZ,ODOBTX FROM QGPL/DSPOBJD ORDER BY 4 DESC

Regards

Jonathan Ball wrote:
> A developer reported that a file is damaged. He obviously saw something
> in a job that indicated the object is damaged, but I can't see any
> indication of damage using any of the object manipulation commands that
> I know, e.g. DSPOBJD.

Re: How to see that an object is damaged

On Apr 4, 12:09 pm, Jonathan Ball wrote:
> A developer reported that a file is damaged. He
> obviously saw something in a job that indicated the
> object is damaged, but I can't see any indication of
> damage using any of the object manipulation commands
> that I know, e.g. DSPOBJD.

As you have found, the DSPOBJD command will not show all types of
damage to a file. There are other methods to locate damage files.
1. Perform a RCLSTG. Although this touches all objects on the
system, it will not find all types of damage.
2. You could save the object to a SAVF. This is a bit more robust
than the RCLSTG however, will not show damamge to file records. If
you have TAATOOLS, it provides a command (CHKOBJDMG) which does this.
3. The link http://www-1.ibm.com/support/docview...2565c2007cefaa
shows a program you can create to locate damage to the records in a
file.

Re: How to see that an object is damaged

Karl wrote:
> To be able to see if any objects are damaged, run this:
> SBMJOB CMD(DSPOBJD OBJ(*ALL/*ALL) OBJTYPE(*ALL) OUTPUT(*OUTFILE)
> OUTFILE(QGPL/DSPOBJD)) JOB(DSPOBJD) JOBQ(QTXTSRCH)
>
> Then in SQL (STRSQL or WRKDBF or iSeries Navigator, Databases,
> right-click Run SQL Scripts) after the above job has finished, do this:
> SELECT * FROM QGPL/DSPOBJD WHERE ODOBDM <> '0'
>
> This will list all damaged objects.

This is what I don't understand. Why won't the display
screens for DSPOBJD have something in them that
indicate an object is damaged? I did both TYPE(*FULL)
and TYPE(*SERVICE), and there was no indication of it.
I already knew which object it was, because an IT
liaison with the users reported it.

>
>
> Off topic, but useful, to be able to see all objects by size in
> descending order, do this:
> SELECT ODLBNM,ODOBNM,ODOBTP,ODOBSZ,ODOBTX FROM QGPL/DSPOBJD ORDER BY 4 DESC
>
> Regards
>
>
> Jonathan Ball wrote:
>> A developer reported that a file is damaged. He obviously saw
>> something in a job that indicated the object is damaged, but I can't
>> see any indication of damage using any of the object manipulation
>> commands that I know, e.g. DSPOBJD.

Re: How to see that an object is damaged -- re: object size

The field ODOBSZ is deprecated. The description of ODOBSZ, as seen
in the request to DSPFFD QSYS/QADSPOBJ suggests to use instead, the
following expression to calculate object size: ODSIZU*ODBPUN

Karl wrote: <>
> Off topic, but useful, to be able to see all objects by size in
> descending order, do this:
> SELECT ODLBNM,ODOBNM,ODOBTP,ODOBSZ,ODOBTX FROM QGPL/DSPOBJD ORDER BY 4 DESC

Re: How to see that an object is damaged

..
My first rule for following up on all "damage" is to insist on the
error message and full symptom details with that message and those
preceding it. That is, as obtained from a spooled joblog, all message
details for the failure message and those preceding, including the
request message that initiates the failure; so the failing command
appears as requested explicitly, not from a menu option from where the
requested function must be inferred what was requested/run.

Regards, Chuck
-- All comments provided "as is" with no warranties of any kind whatsoever.

Jonathan Ball wrote:
> A developer reported that a file is damaged. He obviously saw something
> in a job that indicated the object is damaged, but I can't see any
> indication of damage using any of the object manipulation commands that
> I know, e.g. DSPOBJD.

Re: How to see that an object is damaged

..
The ODOBDM and is represented on the DSPOBJD if indeed the conditions
for which that indicator is truly exhibited. IIRC, if not separately in
its own line of text on the display, the text **DAMAGED** appears in the
object "Text" description to denote the condition.
Unfortunately there are some messages issued by the database that may
imply or allude to 'damage', but the actual condition encountered will
not be represented by that indicator in the field ODOBNM. Because the
object is a composite of many different other objects, primarily from
the user perspective that would be the members, attributes manifest at
the object level of the database *FILE {*complex* object type] may have
some idiosyncrasies as compared to *simple* object types. For example,
a simple object that was saved storage free would be manifest as freed,
but a file with both one member freed and one member not freed is a
conundrum for manifesting the overall object 'freed' status.

Regards, Chuck
-- All comments provided "as is" with no warranties of any kind whatsoever.

Jonathan Ball wrote:
> Karl wrote:
>> To be able to see if any objects are damaged, run this:
>> SBMJOB CMD(DSPOBJD OBJ(*ALL/*ALL) OBJTYPE(*ALL) OUTPUT(*OUTFILE)
>> OUTFILE(QGPL/DSPOBJD)) JOB(DSPOBJD) JOBQ(QTXTSRCH)
>>
>> Then in SQL (STRSQL or WRKDBF or iSeries Navigator, Databases,
>> right-click Run SQL Scripts) after the above job has finished, do this:
>> SELECT * FROM QGPL/DSPOBJD WHERE ODOBDM <> '0'
>>
>> This will list all damaged objects.
>
> This is what I don't understand. Why won't the display screens for
> DSPOBJD have something in them that indicate an object is damaged? I
> did both TYPE(*FULL) and TYPE(*SERVICE), and there was no indication of
> it. I already knew which object it was, because an IT liaison with the
> users reported it. <>