A fix is available
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
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