IBM Support

PM81679: DIFFERENT BEHAVIOUR OF SYSPROC.WLM_REFRESH V9 VS V10

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When called with the SSID parameter (parameter 2) set to blank
    or null, the SYSPROC.WLM_REFRESH stored procedure does not work
    as documented on DB2 10 and 11 data sharing groups that have a
    group attach name defined:
    - Expected behavior: The SQL authorization ID of the process
      calling WLM_REFRESH must have READ access or higher to the
      z/OS Security Server System Authorization Facility (SAF)
      resource profile
        group-attach-name.WLM_REFRESH.WLM-environment-name
      in resource class DSNR.
      calling WLM_REFRESH must have READ access or higher to the
      z/OS Security Server System Authorization Facility (SAF)
      resource profile
        ssid.WLM_REFRESH.WLM-environment-name
      in resource class DSNR.
    The actual behavior is correct only if WLM_REFRESH is called on
    a non-data sharing subsystem or on a data sharing group that
    does not have a group attach name defined.
    

Local fix

  • For now, the workaround is to use job DSNTEJ6W to assemble the
    DSNTWR module.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All users of the SYSPROC.WLM_REFRESH stored  *
    *                 procedure in DB2 10 for z/OS and DB2 11 for  *
    *                 z/OS are affected by this change.            *
    ****************************************************************
    * PROBLEM DESCRIPTION: WLM_REFRESH has two input parameters,   *
    *                      one for the name of the WLM environment *
    *                      to be refreshed and the other for the   *
    *                      subsystem ID (SSID).  It uses these     *
    *                      parameters to generate the name of an   *
    *                      authorization resource profile that     *
    *                      determines whether to honor the refresh *
    *                      request.                                *
    *                                                              *
    *                      In a data sharing environment, when     *
    *                      WLM_REFRESH is called with its SSID     *
    *                      parameter set to null or blank, it is   *
    *                      supposed to use the group attach name,  *
    *                      if one is defined, to build the         *
    *                      resource profile name.  Currently,      *
    *                      however, it always uses the DB2         *
    *                      subsystem name.                         *
    ****************************************************************
    * RECOMMENDATION: Apply the fixing PTF for this APAR.          *
    ****************************************************************
    WLM_REFRESH is a DB2-supplied stored procedure that can be
    called by an authorized user to request refresh of a specified
    WLM environment on a remote or local system.
    
    In order to execute the CALL statement successfully, the SQL
    authorization ID of the process must have READ access or higher
    to the z/OS Security Server System Authorization Facility (SAF)
    resource profile ssid.WLM_REFRESH.wlm-environment-name in
    resource class DSNR. Both wlm-environment-name and ssid can be
    passed as input parameters to WLM_REFRESH:
     * wlm-environment-name specifies the name of the WLM
       environment that you want to refresh.
     * ssid specifies the subsystem ID of the DB2 subsystem with
       which the WLM environment is associated. If this parameter
       is NULL or blank, WLM_REFRESH uses one of the following
       values for this parameter:
       - In a non-data sharing environment, WLM_REFRESH uses the
         ID of the DB2 subsystem on which it runs.
       - In a data sharing environment, WLM_REFRESH uses the group
         attach name, if defined, of the data sharing group on which
         it runs.  If a group attach name is not defined then
         WLM_REFRESH uses the ID of the DB2 subsystem on which
         it runs.
    
    Currently, in DB2 10 and 11, when the ssid parameter is NULL or
    blank, WLM_REFRESH always uses the ID of the DB2 subsystem on
    which it runs to construct the name of the SAF resource profile,
    even if the environment is a data sharing environment that has a
    group attach name defined.
    

Problem conclusion

  • This APAR modifies WLM_REFRESH so that, when called with a NULL
    or blank SSID parameter setting on a DB2 data sharing group that
    has a group attach name defined, it uses the group attach name
    rather than the ID of the DB2 subsystem on which it's running
    to construct the name of the SAF resource profile,
    ssid.WLM_REFRESH.wlm-environment-name.
    
    In order to discover the group attach name, DSNTWR, the external
    module for WLM_REFRESH, now runs a subtask called DSNTWRE that
    returns a copy of the DB2 Environmental Information Block (EIB).
    DSNTWR then obtains from the EIB the data sharing group name
    and group attach name.  If both are non-blank, DSNTWR uses the
    group attach name to construct the SAF resource profile;
    Otherwise, it uses the ID of the DB2 subsystem on which
    WLM_REFRESH is running.
    
    DSNTWRE, like DSNTWR, is provided in both load module form
    and source code form.  The load module resides in member
    DSNTWRE of the SDSNLOAD library.  The source code resides
    in member DSNTWRE of the SDSNSAMP library.  IVP job
    DSNTEJ6W is modified with an optional job step that can be
    used to prepare a local DSNTWRE module from the DSNTWRE
    source code.
    
    Introducing DSNTWRE: Program to obtain the DB2 EIB
    --------------------------------------------------
    Like DSNTWR, DSNTWRE is provided in both object and source
    format.  DSNTWRE is attached by DSNTWR as a subtask but it could
    also be linked and run inline by any program that wants to
    obtain the EIB.  DSNTWRE uses the DB2 RRSAF IDENTIFY function
    to locate the EIB.
    
    DSNTWRE expects 4 parameters:
    1. The address of a 4-byte character field that contains:
       - on input : The DB2 subsystem name
       - on output: (unchanged)
    2. The address of a fullword field that contains:
       - on input : (unused)
       - on output: The return code of this program.
    3. The address of a character field, whose size is equivalent
       to the size of the DSNDEIB macro. This field contains:
       - on input : (unused)
       - on output: Unchanged if parameter 2 is not 0, otherwise the
                    EIB (as defined by DSNDEIB macro)
    4. The address of a 120-byte varying-length character field that
       contains:
       - on input : (unused)
       - on output: Unchanged if parameter 2 is 0, otherwise a DB2
                    error message.
    
    If DSNTWRE runs successfully, it returns 0 at the address
    specified by parameter 2 and the EIB content at the address
    specified by parameter 3.
    
    If DSNTWRE runs unsuccessfully, it leaves parameter 3 unchanged
    and returns one of the following diagnostic messages via
    parameter 4:
     * DSNA614I DSNTWRE UNABLE TO OBTAIN WORK AREA STORAGE,
                SIZE = n BYTES
    
       In this case, it returns 8 at the address specified by
       parameter 2.
    
    
     * DSNT012I DSNTWRE rrsaf-function REQUEST FAILED. DSNRLI RETURN
                CODE = dsnrli-return, RRSAF RETURN CODE =
                rrsaf-return, RRSAF REASON CODE = rrsaf-reason
    
       In this case, it returns the RRSAF return code at the address
       specified by parameter 2.
    
    
    Changes to DSNTWR: External module for WLM_REFRESH
    --------------------------------------------------
    As noted earlier, DSNTWR runs DSNTWRE as a subtask.  Before
    attempting the attach, DSNTWR uses BLDL to ensure that DSNTWRE
    is available.  If it is not, DSNTWR ends with return code -991
    and this (new) message:
    
      DSNT548I DSNTWR LOAD MODULE NAME DSNTWRE NOT FOUND, BLDL
               R15=return-code, R0=reason-code
    
    If DSNTWRE is available, DSNTWR will attach it as a subtask,
    passing in the addresses of the subsystem ID and areas for a
    return code, the EIB, and an output message.
    
    If DSNTWRE sets a non-zero return code, DSNTWR ends with the
    return code and message passed back from DSNTWRE.
    
    If DSNTWRE sets a zero return code then, if the data sharing
    group name and the group attach name field in the returned EIB
    are both non-blank, DSNTWR will use the group attach name to
    build the SAF resource profile.  Otherwise, DSNTWR will use
    the ID of the DB2 subsystem on which WLM_REFRESH runs.
    
    Changes to sample job DSNTEJ6W
    ------------------------------
    Sample job DSNTEJ6W prepares, binds, and executes a sample
    caller of WLM_REFRESH.  It also contains optional (commented-
    out) job steps for preparing and binding DSNTWR from its
    source module, prefix.SDSNSAMP(DSNTWRS).
    
    A new, optional (commented-out) job step, PH06WS00, is added
    to DSNTEJ6W that can be used to prepare DSNTWRE from its
    source module, prefix.SDSNSAMP(DSNTWRE).
    
    In addition, minor changes are made to PH06WS01, an optional
    job step that can be used to prepare module DSNTWR from its
    source module, prefix.SDSNSAMP(DSNTWRS).  In particular, the
    link edit parameter list is changed from
      PARM.LKED='LIST,LET,XREF,REUS,AMODE=31,RMODE=ANY,RENT'
    to:
      PARM.LKED='LIST,XREF,AMODE=31,RMODE=ANY,RENT'
    
    Finally, minor changes are also made to PH06WS03, the job step
    that prepares DSN8ED6, a sample caller of WLM_REFRESH.  In
    particular, the link edit parameter list is changed from
      PARM.LKED='AMODE=31,RMODE=ANY,MAP,RENT,REUS'
    to:
      PARM.LKED='AMODE=31,RMODE=ANY,MAP,RENT'
    
    New DB2 message
    ---------------
    DSNT548I program-name LOAD MODULE NAME module-name NOT FOUND,
             BLDL R15=return-code, R0=reason-code
    
    Explanation: Prior to an attempted load or attach, program
    program-name could not be located during MVS BLDL processing.
    The BLDL issued a return code of return-code and a reason code
    of reason-code.
    
      program-name
          The name of the program that issued this message
      module-name
          The name of the module that could not be found.
      return-code
          The return code issued by the BLDL request.
      reason-code
          The BLDL reason code.
    
    System action: Module program-name terminates.
    
    System programmer response: Verify that the named load module
    exists, and that DB2 can access it.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PM81679

  • Reported component name

    DB2 OS/390 & Z/

  • Reported component ID

    5740XYR00

  • Reported release

    A10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-01-30

  • Closed date

    2014-03-26

  • Last modified date

    2014-05-02

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UI16451 UI16452

Modules/Macros

  • DSN@WR   DSNTEJ6W DSNTINS3 DSNTWR   DSNTWRE
    HDBAA10J HDBBB10J
    

Fix information

  • Fixed component name

    DB2 OS/390 & Z/

  • Fixed component ID

    5740XYR00

Applicable component levels

  • RA10 PSY UI16451

       UP14/04/13 P F404

  • RB10 PSY UI16452

       UP14/04/13 P F404

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEPEK","label":"Db2 for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"10.1","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"10.1","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
02 May 2014