PowerWire Logo
The trusted voice of the IBM Power community

Check Object Integrity

Check Object Integrity

One of the challenges of today’s world is how to keep informed. For that reason, I have subscribed to the IBM website https://www.ibm.com/support/mynotifications. First of all, you need an IBM ID, which you may already have, to be able to subscribe to the products of your interest.

Once you do so, you will receive all the notifications for all the products you subscribed to. This is where the journey for this article started.

One of the IBM My Notification mails showed an item titled IBM i: OSP CHKOBJITG logs ALTERED violation for proxy commands.

Although I have some IBM i years under my belt, this command was new to me. That is why I had a look at the documentation behind the command Check Object Integrity.

As I intended to analyze the result using SQL, and SQL services, I used Run SQL Scripts available in IBM i Access Client Solutions (ACS), so I started with the command shows below:

CL:CHKOBJITG USRPRF(*ALL) OUTFILE(QRPLOBJ/CHKOBJITG) CHKSIG(*NONE);

The output file contained the fields shown below;

As that information about the objects is rather limited, I decided to use the QSYS2.OBJECT_STATISTICS SQL service also.

So the SQL statement used was:

SELECT *
    FROM QRPLOBJ.CHKOBJITG
         INNER JOIN TABLE (
                 QSYS2.OBJECT_STATISTICS(
                     OBJECT_SCHEMA => '' CONCAT AILIB CONCAT '',
                     OBJTYPELIST => '' CONCAT AITYPE CONCAT '',
                     OBJECT_NAME => '' CONCAT AINAME CONCAT '')
             ) AS X
             ON AINAME = OBJNAME
    WHERE SUBSTRING(ailib, 1, 1) = 'Q'
    ORDER BY AILIB, AINAME;

The reason why I added the where clause was triggered, after running the statement

(SELECT DISTINCT AILIB FROM QRPLOBJ.CHKOBJITG)

When I get a list of all the libraries with objects detected by the CHKOBJITG command,

In order to see what I had to deal with. To my surprise, on one LPAR the library QTCP popped up. It turned out that some object was related to 5722TC1 V5R1M0. After having discovered this, I decided to open an IBM Support case and asked for advice.

Well, the outcome of that was not something I liked. The advice was given to delete the License Product Program (LPP) and install it again.

Only this would clear up the mess and result in a fresh clean installation of the LPP. Now the choice I have was, do I follow the advice given by IBM and accept the down time, or do I investigate further and delete all the individual objects myself.

When using the scalar function QSYS2.QCMDEXC that cannot be that hard. So, I took my advice!

Another aspect of running this command is that it will help you to get rid of old copies of IBM i commands still in use from previous releases. In the old days “Proxy CL” commands did not yet exist. On the IBM documentation page of the command CHKOBJITG IBM added a special note for situation:

Note: IBM commands duplicated from a release prior to V5R2 will be logged as ALTERED violations. These commands should be deleted and re-created using the CRTDUPOBJ (Create Duplicate Object) command each time a new release is loaded.

Yes, the command CRTDUPOBJ will most certainly do, but my advice is to use Create Proxy Command (CRTPRXCMD) instead. As the command refers to the original command, this is a one-time action.

Editors Note: Using a Proxy commands will not give you issues when upgrading the operating system.

When running the CHKOBJITG command one of the usual suspects I have encountered on several LPARs is the library QTIVCIT. This library is part of the IBM License Metric Tool (ILMT).

So, if you have found a way to bring this library up to date, please leave a comment behind.