Db2 Tools

CA Database Management for DB2 for z/OS – What maintenance has been applied?

  • 1.  CA Database Management for DB2 for z/OS – What maintenance has been applied?

    Posted 03-01-2018 03:10 AM

    Let's say a customer executing one of the products encounters an abend.  How do you determine what maintenance has been applied to the load module? In this article, we introduce CAMODID (a purpose-built tool) and expand on the existing Technical Document, TEC481994, which identifies a number of manual methods to determine what maintenance has been applied. In these examples, we have encountered an abend in PDTDIIC0 and are specifically looking to see if PTF RO95038 has been applied.

     

    The following methods are described:

    • CA Load Module Service Analyzer
    • SMP/E Query
    • Either of AMASPZAP or AMBLIST utilities to dump load module information
    • ISPF Search-For to scan a load library
    • ISPF Browse to inspect a load module

     Additionally, the differences between a GA IR and a GA Complete PAX file are covered:

    • What is the difference between a GA IR and a GA Complete PAX file?

     

    Background 

    When doing maintenance research, there are several things to consider:

    • We provide product maintenance as either an SMP/E APAR or PTF.  In this article:
      • RMID (replacement module id) identifies the name of a specific APAR or PTF. 
      • The term maintenance refers to a collection of one or more APARs or PTFs.
    • When applying maintenance, SMP/E manages a set of libraries referred to as the Target zone which are an executable runtime environment.  Best practices advise against using the Target zone libraries directly to avoid exposing users to an unstable environment while maintenance is being applied.  To address this concern, a copy of the Target zone libraries is created and deployed to the LPARs where the products will be used.  This deployment process needs to be performed each time maintenance is applied.

    This additional step introduces the possibility that the deployment environment will be out of synch with the SMP/E Target library environment.  Since SMP/E reporting reflects the status of the Target zone environment it does not automatically mean that the report applies to a given deployment environment.

    • Product maintenance can consist of many element types such as ISPF panels, messages, and JCL.  Our packaging embeds the RMID string in object modules only.  If the maintenance does not contain a ++MOD statement, the RMID string is not found in the load library. 
    • When maintenance is applied to an object module, the RMID string is updated to reflect the name of its RMID.  When using one of the load library inspection methods, be aware that the load library represents a snapshot in time.  The library may:
      • Not have the maintenance applied.  You would not expect to find the RMID string.
      • Have the maintenance applied.  If this was the last maintenance that has been applied to a module, you would expect to find the RMID string.
      • Have the maintenance and subsequent maintenance applied.  When subsequent maintenance is applied to the same object module, prior RMIDs will not be found.
    • When a product release is initially packaged, no maintenance exists.  The RMID string is set to the SMP/E FMID name (function) that the module is packaged in.
      • The RMID value will remain the FMID name until a module experiences its first maintenance.  Some modules may never have maintenance applied over the course of a release.

     

    CA Load Module Service Analyzer

    The CAMODID utility is packaged in the CA Common Services stack and can be used to report on the applied maintenance for a load library.  Our customers already have this utility installed! 

    The utility replaces other methods that are often used:

    • ISPF Search-For method
    • AMASPZAP or AMBLIST utilities
    • ISPSF Browse

    The utility works for all CA products that are CAMODID enabled.  It can be invoked interactively in ISPF or in batch.   

     

     

    //STEP1    EXEC PGM=IKJEFT01                                   

    //SYSPROC  DD DISP=SHR,DSN=SYS2.SYSEXEC                        

    //SYSTSPRT DD SYSOUT=*                                         

    //SYSTSIN  DD *                                                

    CAMODID DSNAME(PTIPROD.RD190.DEV.CDBALOAD) DETAIL LMOD(PDTDIIC0)

     

    The generated report can be easily captured and sent to CA for review.  It provides consolidated summaries:

    • Identifying the last applied maintenance for each object module.
    • Identifying all maintenance applied to the load module. 

    The report confirms that RO95038 has indeed been applied to this load library.

     

     

            PROCESSING DATASET=PTIPROD.RD190.DEV.CDBALOAD                     

                                                                               

         MODULE   FMID    RMID     DATE   TIME       PRODUCT                  

        -------- ------- ------- -------- ----- --------------------          

                                                                               

    ===========================================================================

    LMOD=PDTDIIC0                                                             

        DT$DIIC0 CPDTJ00 TR95149 20170321 17.14 CA Database Management R19.0  

        DT$DI8C0 CPDTJ00 RO94732 20170228 08.55 CA Database Management R19.0  

        DT$DI9C0 CPDTJ00 TR95149 20170321 17.20 CA Database Management R19.0  

        DT$DIPC0 CPDTJ00 RO95038 20170314 19.16 CA Database Management R19.0  

                                                                               

                       CA LOAD MODULE SERVICE SUMMARY                         

                                                                               

     RMID    FMID      RMID    FMID      RMID    FMID      RMID    FMID       

                                                                               

    TR95149 CPDTJ00   RO95038 CPDTJ00   RO94732 CPDTJ00

     

    In contrast to the prior example, the following example shows what a base release looks like before any maintenance has been applied.  Each module has an RMID that has been initialized to its FMID name.  In addition, the Service Summary reports no maintenance.

     

            PROCESSING DATASET=PTIPROD.RD200.DEV.CDBALOAD                     

                                                                               

         MODULE   FMID    RMID     DATE   TIME       PRODUCT                  

        -------- ------- ------- -------- ----- --------------------          

                                                                               

    ===========================================================================

    LMOD=PDTDIIC0                                                             

        DT$DIIC0 CPDTK00 CPDTK00 20170328 12.47 CA Database Management R20.0  

        DT$DI8C0 CPDTK00 CPDTK00 20170327 21.51 CA Database Management R20.0  

        DT$DI9C0 CPDTK00 CPDTK00 20170327 21.51 CA Database Management R20.0  

        DT$DIPC0 CPDTK00 CPDTK00 20170327 21.50 CA Database Management R20.0  

                                                                               

                       CA LOAD MODULE SERVICE SUMMARY                         

                                                                               

                        NO SERVICE MAINTENANCE FOUND  

     

    Documentation for CAMODID can be found on the CA DocOps site.  The utility supports more use cases which have not been illustrated in this article.

    Hopefully you can see the power and the simplicity of the CAMODID utility.  Point it to the runtime load library to determine the latest maintenance that has been applied. 

    Next we explore alternate methods to obtain this information.

     

    SMP/E Query

    You can query the SMP/E CSI in either ISPF or batch and is an easy way to determine what maintenance has been pulled down from the CA support site.  You need the SMP/E CSI dataset and Target zone name to perform the query.   

     

     

    //SMPE    EXEC PGM=GIMSMP                    

    //SMPCSI   DD DISP=SHR,DSN= PTIPROD.RD190.PRD.CSI   <-- Update with site specific CSI 

    //SMPCNTL  DD *                               

     SET  BOUNDARY(CAIT0) .                             <-- Update with Target Zone                       

     LIST PTFS.   

     

    In the batch report below, we can see that SYSMOD RO95038 has been applied.  The report provides information about the PTF and identifies the object modules that are updated by the PTF.  The report shows the relationship of the PTF with other maintenance.  In addition, it also identifies all the modules that are updated in the PTF.

     

    RO95038   TYPE            = PTF                                                                                     

              DESCRIPTION     = DUPLICATE EXCEPTIONS FOR SQL USING CPU PARALLELISM                                     

              STATUS          = REC  BYP  APP                                                                           

              FMID            = CPDTJ00                                                                                

              DATE/TIME REC   = 17.074  10:14:01                                                                       

                        INS   = 17.074  10:14:08                                                                       

              SOURCEID        = CAP1703                                                                                

                                D190R01399                                                                             

              PRE    VER(001) = RO78199   RO78673   RO79247   RO79651   RO79913   RO80050   RO80197   RO80565   RO80822

                                RO81029   RO83779   RO83941   RO85469   RO85918   RO87010   RO87439   RO87957   RO88357

                                RO88607   RO88741   RO89174   RO91026   RO91241   RO91623   RO92190   RO92351   RO92933

                                RO93375   RO94030   RO94205   RO94593   RO94882   RO94982                              

              SUPING VER(001) = RO79164   RO80342   RO80718   RO80898   RO81413   RO82589   RO83072   RO84456   RO84899

                                RO84992   RO85001   RO85659   RO86415   RO86718   RO89230   RO90016   RO90442   RO91332

                                TR77302   TR77303   TR79164   TR80342   TR80718   TR80898   TR81413   TR82589   TR83072

                                TR84456   TR84899   TR84992   TR85001   TR85659   TR85847   TR86384   TR86415   TR86718

                                TR89230   TR90016   TR90329   TR90442   TR91332   TR95038                              

              MOD             = DT$DIIC0  DT$DIIC1  DT$DIIC2  DT$DIIC9  DT$DIOC0  DT$DIOC1  DT$DIOC2  DT$DIOC9  DT$DIPC0

                                DT$DIPC1  DT$DIPC2  DT$DIPC9  DT$DIYC0  DT$DIYC1  DT$DIYC2  DT$DIYC9                   

     

    SMP/E queries provide insight into the relationships of the maintenance that CAMODID cannot.  Likewise, SMP/E cannot provide insight into the maintenance that has been applied to a deployed library.  Both have their place and can be used successfully in tandem to research issues.

     

    What is the difference between a GA IR and a GA Complete PAX file?

    We publish a PAX file for both the GA IR and the GA Complete milestones.  The benefit of the GA Complete PAX is that all IR maintenance is rolled up.  Customers will be able to install the GA Complete PAX faster than installing the GA IR PAX and then applying all the maintenance.  The resulting target environment will be the same using either method.

    Depending on which PAX file the customer installed, SMP/E queries may provide contrasting results when researching a fix.  Here is an online SMP/E query showing part of a GA IR function definition.  The new function cleans up prior releases that may be installed in the same environment.

     

    Entry Type:  SYSMOD                              Zone Name: CAIT0           

     Entry Name:  CPDTJ00                             Zone Type: TARGET          

     Description: CA Detector for DB2 for z/OS                                   

                                                                                  

       Type:    FUNCTION              Status: APP                                

       FMID:    CINSJ00    JCLIN                                                 

       Date/Time: 15.015   12:39:15   APP   REWORK   2015014                     

                                                                                  

                                                                                  

                                                                                  

             -------- -------- -------- -------- -------- -------- --------      

    SUP      CPDTF00  CPDTG00  CPDTH00  CPDTI00                                  

    DEL      CPDTF00  CPDTG00  CPDTH00  CPDTI00     

                                 

    Customers participating in the IR program apply all maintenance introduced during the IR phase.  SMP/E, having applied all that maintenance, records the detailed information for each PTF and APAR applied. 

    During the IR phase, PTF RO92351 was published.  Detailed SMPE/E information is available after the maintenance was applied.

     

      Entry Type:  SYSMOD                              Zone Name: CAIT0    

      Entry Name:  RO92351                             Zone Type: TARGET   

      Description: DB2 TOOLS INCREMENTAL RELEASE FIX #4                    

                                                                            

        Type:    PTF                   Status: APP           BYP           

        FMID:    CPDTJ00                                                   

        Date/Time: 16.281   12:36:44   APP                                 

                                                                            

                                                                            

                                                                            

              -------- -------- -------- -------- -------- -------- --------

    PRE      RO78199  RO78204  RO78673  RO78820  RO78978  RO79168  RO79247

              RO79651  RO79723  RO79913  RO80050  RO80197  RO80342  RO80502

              RO80509  RO80565  RO80718  RO80822  RO80898  RO81029  RO81186

              RO81413  RO81547  RO81580  RO81684  RO82177  RO82510  RO82589

              RO82885  RO83072  RO83779  RO83941  RO84030  RO84443  RO84456

              RO84899  RO84927  RO84961  RO84992  RO85001  RO85234  RO85469

              RO85659  RO85918  RO86415  RO86536  RO86718  RO86900  RO87010

              RO87402  RO87439  RO87957  RO88041  RO88070  RO88357  RO88607

              RO88741  RO89174  RO89230  RO90130  RO90333  RO90433  RO90442

              RO91026  RO91193  RO91241  RO91311  RO91332  RO91623  RO91773

              RO92190                                                      

     SUP      RO78546  RO79327  RO79581  RO82839  RO89273  RO89463  RO90023

              TR77302  TR77303  TR77748  TR78546  TR79327  TR79581  TR79695

              TR79908  TR80037  TR82839  TR84911  TR85847  TR86384  TR87912

              TR87950  TR88068  TR88169  TR88204  TR89273  TR89463  TR90023

              TR90107  TR90169  TR90219  TR90285  TR90329  TR91128  TR91235

              TR91390  TR92096  TR92351                                    

     IFREQ    RO92344  RO92345  RO92346  RO92347  RO92350  RO92352  RO92353

              RO92354  RO92355  RO92356  RO92357  RO92358  RO92359  RO92360

              RO92361  RO92362  RO92363  RO92364  

                               

     Since the GA Complete PAX contains only the last update for each published module, none of the IR PTFs or APARs are present!  Since the IR maintenance is not present, SMP/E cannot report detailed information. 

    The same function definition, on the GA Complete PAX, looks very different.  It identifies all previously published IR maintenance by superseding (SUP) it.  This critical piece of housekeeping enables maintenance to be applied after GA Complete for all customers, regardless of which PAX file the customer installed.     

     

     Entry Type:  SYSMOD                              Zone Name: CAIT0            

     Entry Name:  CPDTJ00                             Zone Type: TARGET           

     Description: CA Detector for DB2 for z/OS                                    

                                                                                   

       Type:    FUNCTION              Status: APP                                 

       FMID:    CINSJ00    JCLIN                                                   

       Date/Time: 17.101   14:38:42   APP   REWORK   2016288                      

                                                                                   

                                                                                   

                                                                                   

             -------- -------- -------- -------- -------- -------- --------       

    SUP      AR87957  AR91241  CPDTF00  CPDTG00  CPDTH00  CPDTI00  RO78199        

             RO78204  RO78490  RO78546  RO78673  RO78703  RO78820  RO78978        

             RO79164  RO79168  RO79247  RO79306  RO79327  RO79581  RO79651        

             RO79723  RO79913  RO80019  RO80050  RO80197  RO80209  RO80342        

             RO80454  RO80482  RO80502  RO80509  RO80565  RO80596  RO80604        

             RO80718  RO80822  RO80898  RO81029  RO81186  RO81393  RO81413        

             RO81547  RO81580  RO81684  RO82177  RO82510  RO82589  RO82714        

             RO82839  RO82885  RO83072  RO83779  RO83941  RO84030  RO84443        

             RO84456  RO84854  RO84899  RO84927  RO84961  RO84992  RO85001        

             RO85234  RO85246  RO85469  RO85659  RO85827  RO85918  RO86415        

             RO86536  RO86718  RO86900  RO87010  RO87371  RO87402  RO87439        

             RO87957  RO88041  RO88070  RO88357  RO88607  RO88741  RO88751        

             RO89174  RO89230  RO89273  RO89463  RO90016  RO90023  RO90130        

             RO90140  RO90333  RO90433  RO90442  RO91026  RO91193  RO91241        

             RO91311  RO91332  RO91623  RO91773  RO92190  RO92351                 

    DEL      CPDTF00  CPDTG00  CPDTH00  CPDTI00      

        

    Performing a query on the last SYSMOD in the SUP list, RO92351, we see a skeleton definition having no detail.  Since the PTF was not shipped in the GA Complete PAX, SMP/E has no detail.  The only thing it does know is that it was superseded by the SYSMOD FUNCTION definition.  This breadcrumb of information is all SMP/E needs in order to satisfy requisite checks specified on subsequent maintenance.

     

      Entry Type:  SYSMOD                              Zone Name: CAIT0    

      Entry Name:  RO92351                             Zone Type: TARGET   

      Description:                                                          

                                                                            

        Type:                          Status:                             

        FMID:                          SUPBY   CPDTJ00                      

        Date/Time:                                                         

                                                                            

                                                                            

                                                                            

              -------- -------- -------- -------- -------- -------- --------

     

     

     

    Next we explore the old-school methods to obtain maintenance information from a load library.  Hopefully in reviewing these methods you will be comfortable to abandon them and just use CAMODID and SMP/E queries to perform your research.

     

    IBM AMASPZAP or AMBLIST utilities 

    You can use AMASPZAP or AMBLIST to dump load module information.  The AMBLIST utility provides a basic report identifying the CSECTs in a load module.

     

     

    //AMBLIST  EXEC PGM=AMBLIST                          

    //PTILIB   DD DISP=SHR,DSN=PTIPROD.RD190.DEV.CDBALOAD

    //SYSPRINT DD SYSOUT=*                              

    //SYSIN    DD *                                     

     LISTIDR  OUTPUT=IDENT,MEMBER=PDTDIIC0,DDN=PTILIB   

     

    By reviewing the user data section of the report, we can see the maintenance that has been applied to the load module and confirm that RO95038 has been applied to the load module.

     

     

    -------------------------------------

              DATE         USER DATA    

    CSECT:    DT$DIIC0                  

              03/31/2017   TR95149      

    CSECT:    DT$DIPC0                  

              03/15/2017   RO95038      

    CSECT:    DT$DI8C0                  

              03/09/2017   RO94732      

    CSECT:    DT$DI9C0                  

              03/31/2017   TR95149      

     

    ISPF Search-For

    You can use the ISPF Search-For dialogue can scan for the RMID name in a load library. 

     

     

                                     Search-For Utility                           

    Command ===>                                                                 

                                                                                  

    Search String  . . RO95038                                                    

                                                                                  

    ISPF Library:                                                                

       Project . . .                                                              

       Group . . . .          . . .          . . .          . . .                

       Type  . . . .                                                             

       Member  . . .                 (Blank or pattern for member selection list,

                                       "*" for all members)                      

    Other Partitioned, Sequential or VSAM Data Set:                              

       Data Set Name . . . 'PTIPROD.RD190.DEV.CDBALOAD(*)                        

       Volume Serial . . .           (If not cataloged)                          

     

    Note that this utility identifies load modules containing an object module where the RMID was the last RMID applied.  In the report below, three load modules have the fix.

     

     

    LINE-#  SOURCE SECTION                    SRCH DSN: PTIPROD.RD190.DEV.CDBALOAD                                    

                                                                                                                       

                                                                                                                       

    PDTDIIC0                    --------- STRING(S) FOUND -------------------                                          

                                                                                                                       

        19  µ µ µ µ ¬#MID¬   ç y   ÌDT$DI9C0 CPDTJ00  ~RMID(TR95149)~ 20170321 17.20        CA Database Management   R

        22  M    Ø        Ø     Ø       Ø                      ö   Ü            LDLDM             Ø Ø   Ø             

                                                                                                                       

    PDTDIIC1                    --------- STRING(S) FOUND -------------------                                         

                                                                                                                       

        19  gement   R19.0   - COPYRIGHT (C) 2014      CA.   ALL RIGHTS RESERVED.            DT$DIPC1 03/14/17 19.16  

        22                      Ø       Ø                      &   Ø            LDLDM    Ø        Ø     Ø       Ø     

                                                                                                                       

    PDTDIIC2                    --------- STRING(S) FOUND -------------------                                         

                                                                                                                       

        19  xÈ  ç Ý ñ sKxà  ñ sMxM  ñ sOxà  ñ sQxM  T  Ø  N s¹  xd ¥x4 óN Ý süxd  N Ý súxd  T E-  j @þxd  j @þx   K ¾+

        22                      Ø       Ø                      µ   }            LDLDM    Ø        Ø     Ø       Ø     

                                                                                                                        

     

    ISPF Browse

    When the load module name is known, you can browse the member directly and issue the command: FIND RO95038.  Here we are looking directly at the CAMODID-enabled content which identifies the:

    • Object module name
    • SMP/E FMID
    • RMID string
    • Build date and time

     

     

    BROWSE    PTIPROD.RD190.DEV.CDBALOAD(PDTDIIC0)                                       

     Command ===>                                                                          

    .DT$DIPC0 CPDTJ00  ~RMID(RO95038)~ 20170314 19.16 .......CA Database Management   R19.0

    ...h...h.............LDLDM.............Ø.....Ø.......Ø.................ý...ý...ý.......

    ........H..ô...ô.............LDLDM.............Ø.....Ø.......Ø..................^..L...

    µ....................Ø...Ø.........gö....................Ø...Ø.........g}..............

    ........-X.........ãY...................ØX.........¢....................µX.........|...

    ........-SØ.À.......ï.....ç.............ØSØ.À.......Â.....ç..............SØ.À.......?..

    ********************************************************** Bottom of Data *************

     

    We can see that PTF RO95038 has been applied.