One of two issues may be occurring
1. In one of our LPARs, we are seeing a healthcheck exception in APF, where the system sees multiple versions of MIM load datasets even though we have defined only one dataset in the PROG member. We're unsure from where it picks the dataset from. Could you please advise on this issue?
The MIM STEPLIB contains hlq.MIM.R125F.LOAD.
The healthcheck shows
CSVH0955I A problem was found with each APF list entry displayed.
VOLUME DSNAME ERROR
MSYS02 hlq.MIM.R125.LOAD DS is SMS-managed
MSYS07 hlq.MIM.R125A.LOAD DS is SMS-managed
* Low Severity Exception *
Where are the R125.LOAD and R125A.LOAD files coming from?
2. We are seeing old MIM LOAD libraries when viewing MIM in SYSVIEW
Jobname CAMIMGR ASID 0009 Jobid STC35557
Interval n/a
-------------------------------------------------------
Cmd DDname DatasetName
STEPLIB hlq.MIM.V125.CBTDLOAD.M210121 <--current
MIMPARMS hlq.MIM.V125.CBTDPARM
MIMMSGS hlq.MIM.V125.CBTDMSEN.M210121
MIMRMFIL hlq.MIM.V125.MIMRMFIL.SYSC
SYS00001 hlq.MIM.V125.CBTDLOAD.M180110 <--old
SYS00002 hlq.MIM.V125.CBTDLOAD.M180110 <--old
Where are the CBTDLOAD libraries in SYS00001 and SYS0002 coming from?
Release : 12.5
Component : MIM
The hlq.RMFIL used for the Dynamic Restart Feature contains old datasets
1. When MIM initializes and you have the MIMRMFIL DD defined, any libraries contained in your hlq.RMFIL are APF authorized IF you have APF enabled (which is the default).
These files are ONLY used or changed when a MIM LOADLIB command is issued. This command is part of the MIM Dynamic Refresh Facility.
Thus if the file has not been needed for a longer period of time, the files it contains may become outdated.
This does not hurt anything in and of itself, but may cause confusion.
2. You can issue the MIM command D LOADLIB to see the contents of your hlq.RMFIL.
This will verify the contents of your file, including which dataset names it contains, and whether APF is set to YES.
Example :
F MIM,D LOADLIB
MIM0067I Command DISPLAY 801
MIM0964I MIM Load Library Display:
Type DSName
Init hlq.MIM125.TS1.CBTDLOAD
Curr hlq.MIM125.TS1.CBTDLOAD
Prim hlq.MIM125.TS1.CBTDLOAD
Alt hlq.MIM125.MII00284.CBTDLOAD.T
SETAPF=Yes
STARTFROM=Initial
You can use this command to verify the contents of your file after every LOADLIB command.
In all of the examples below, I have a STEPLIB in my JCL that points to hlq.MIM125.PRD.CBTDLOAD
The commands allow you to replace the content of the old libraries with your current ones.
We recommend against any manual update of the file as it may cause corruption, unless you want to delete and redefine a new, empty file.
3. If you just want to stop the APF authorization of any files in the RMFIL, you can issue
LOADLIB SETAPF=NO.
The D LOADLIB will then show
F MIM,D LOADLIB
MIM0067I Command DISPLAY 801
MIM0964I MIM Load Library Display:
Type DSName
Init hlq.MIM125.TS1.CBTDLOAD
Curr hlq.MIM125.TS1.CBTDLOAD
Prim hlq.MIM125.TS1.CBTDLOAD
Alt hlq.MIM125.MII00284.CBTDLOAD.T
SETAPF=No
STARTFROM=Initial
If you will not be using some or all of the LOAD libraries contained in this file on any of your systems going forward and want to clean up the content of the file itself, you can issue a few commands to do so.
4. Issuing LOADLIB SAVE
Saves your current LOADLIB environment from your STEPLIB to the Initial and Current locations in the RMFIL.
So now a D LOADLIB shows the current LOAD library in the Initial and Current locations.
F MIM,D LOADLIB
MIM0067I Command DISPLAY 801
MIM0964I MIM Load Library Display:
Type DSName
Init hlq.MIM125.PRD.CBTDLOAD
Curr hlq.MIM125.PRD.CBTDLOAD
Prim hlq.MIM125.TS1.CBTDLOAD
Alt hlq.MIM125.MII00284.CBTDLOAD.T
SETAPF=No
STARTFROM=Initial
F MIM,D LOADLIB
MIM0067I Command DISPLAY 937
MIM0964I MIM Load Library Display:
Type DSName
Init hlq.MIM125.PRD.CBTDLOAD
Curr hlq.MIM125.PRD.CBTDLOAD
Prim hlq.MIM125.TS1.CBTDLOAD
Alt
SETAPF=No
STARTFROM=Initial
F MIM,D LOADLIB
MIM0067I Command DISPLAY 523
MIM0964I MIM Load Library Display:
Type DSName
Init hlq.MIM125.PRD.CBTDLOAD
Curr hlq.MIM125.PRD.CBTDLOAD
Prim hlq.MIM125.PRD.CBTDLOAD
Alt
SETAPF=No
STARTFROM=Initial
So at this point, everything would point to your current libraries and it would actually not hurt to have APF set to YES.
Each of the above LOADLIB commands is independent of any other, so you can issue only those commands needed to correct any problem you are seeing.
The MIMRMFIL is used for the Dynamic Restart Facility.
The content of the hlq.RMFIL cannot be changed manually without the potential for corruption; it must be done using LOADLIB commands
This facility works both with and without the MIMRMFIL. So which option you choose is ultimately up to you.
Here are the differences:
1. If you remove the DD MIMRMFIL statement, the DISPLAY LOADLIB will show the following (assuming the MIM STEPLIB contains DSN=hlq.MIM125.CBTDLOAD)
D LOADLIB
MIA0067I Command DISPLAY 179
MIA0964I MIM Load Library Display:
Type DSName Vol DDName
Init hlq.MIM125.CBTDLOAD VOL001 STEPLIB
Curr hlq.MIM125.CBTDLOAD VOL001 STEPLIB
Prim hlq.MIM125.CBTDLOAD VOL001 STEPLIB
Alt
SETAPF=Yes
STARTFROM=Initial
- you can issue LOADLIB commands to change values you see, and also to issue various REFRESHFROM commands, just as you would with the MIMRMFIL defined.
- at IPL or product restart, the content reverts to what you see above; any changes are not retained.
- we recommend leaving SETAPF=YES. The reason for this is that, when you issue a LOADLIB REFRESH of any kind, MIM is dynamically restarted using the library you choose. Disabling the automatic APF authorization could leave you open to potential failure during MIM restart if the chosen library is not APF authorized.
So if you rarely (or do not) use the LOADLIB REFRESH command and your main concern is to avoid issues with the files in the RMFIL becoming old and showing up in your list of APF Authorized libraries, removing the MIMRMFIL may be your preferred way to go.
2. If you keep the MIMRMFIL DD, the hlq.RMFIL needs to be updated when you apply maintenance and change the LOAD library you will be using, otherwise you will hit the same problem again. You can do this in one of two ways:
A) delete and redefine the RMFIL while MIM is down.
It will autopopulate with the information as in #1 above.
B) Issue LOADLIB commands to ensure the file has current content:
LOADLIB SAVE (set Init and Curr to match STEPLIB)
LOADLIB COMMIT (Set Prim to match STEPLIB)
LOADLIB RESETALTERNATE (to blank out Alt - only required if it has content)
If you choose to keep the MIMRMFIL DD, we have the following recommendations:
- as noted in #1, leave APF set to YES to avoid a potential MIM failure during dynamic restart.
- ensure the LOAD libs in the hlq.RMFIL match the LOAD lib in your STEPLIB when the file is not in use
- should the file become corrupted for some reason, MIM will work as if it was not defined, defaulting to the values of #1 above.
- Browse the hlq.RMFIL file to validate content before issuing a LOADLIB REFRESH of any kind, as occasionally the D LOADLIB results and the actual content may differ.
So if you do set APF to No, please consider carefully how you want to handle the file longer term.
This section of the doc gives an overview of the Dynamic Refresh Feature.
https://techdocs.broadcom.com/us/en/ca-mainframe-software/traditional-management/ca-mim-for-z-os/12-5/release-notes/new-features-in-ca-mim-for-z-os-release-12-5/new-ca-mim-driver-features.html
This section shows the syntax
https://techdocs.broadcom.com/us/en/ca-mainframe-software/traditional-management/ca-mim-for-z-os/12-5/statement-and-command-reference/general-ca-mim-statements-and-commands/mim-loadlib-command.html
and this section supplies specifics about Dynamic Refresh Activation
https://techdocs.broadcom.com/us/en/ca-mainframe-software/traditional-management/ca-mim-for-z-os/12-5/ca-mim-product-maintenance/dynamic-refresh-activation.html