Control data set recovery procedure using CDSVERSIONBACKUP with UPDATEC

For performance reasons, you should use the enhanced CDS recovery function instead of the UPDATEC command to recover your control data sets. However, if you want to use UPDATEC, use the following procedure:

  1. Use the CDSVERSIONBACKUP parameter of the QUERY command to find out the initial characters and the final qualifier of the backup data set name. Save the QUERY information for use in steps 5 and 11. You will receive the following messages from the query:
    ARC0375I
    CDSVERSIONBACKUP,
     
    MCDSBACKUPDSN=uid.MCDS.BACKUP,
     
    BCDSBACKUPDSN=uid.BCDS.BACKUP,
     
    OCDSBACKUPDSN=uid.OCDS.BACKUP,
     
    JRNLBACKUPDSN=uid.JRNL.BACKUP
     
     
    ARC0376I
    BACKUPCOPIES=3,
     
    BACKUPDEVICECATEGORY=DASD,
     
    LATESTFINALQUALIFIER=V0000007,
     
    DATAMOVER=HSM
    Recommendation: If DFSMShsm is not active, you should issue the following IDCAMS LISTCAT command to determine the latest version: LISTCAT LEVEL(uid)

    Also note whether DFSMShsm or DFSMSdss was the data mover (by looking at the prefix letter of the low-level qualifier).

  2. Stop DFSMShsm in all processing units.
  3. Use the Access Method Services DELETE command to delete the control data set that has the error. The following example shows the DELETE command using one of several parameters that are available.
    DELETE CLUSTER(uid.MCDS)
  4. Re-create the control data set that was deleted in step 3. When you re-create the control data set, increase the space allocation for that control data set if more space is required. For more information, refer to the z/OS DFSMShsm Implementation and Customization Guide.
  5. The next step depends on the data mover used to create the backup version.
    • If the data mover was DFSMSdss, restore the latest backup version into the re-created data set using the following JCL example:
           //JOB1 JOB accounting information,REGION=nnnK
           //STEP1     EXEC  PGM=ADRDSSU
           //SYSPRINT DD SYSOUT=*
           //TAPE      DD    DSN=uid.MCDS.BACKUP.D0000106,DISP=(OLD,KEEP)
           //DASD      DD    UNIT=3390,VOL=SER=222222,DISP=OLD
           //SYSIN     DD    *
                       RESTORE DATASET(-
                       INCLUDE(uid.dsname))-
                       INDDNAME(TAPE)-
                       OUTDDNAME(DASD)-
                       REPLACE
           /*
    • If the data mover was DFSMShsm, use the Access Method Services IMPORT command to recover the latest backup version of the affected control data set by using the following JCL example:
           //IMPORT JOB ,'USERID' MSGCLASS=A,REGION=768K
           //STEP1     EXEC  PGM=IDCAMS
           //DEST      DD    DSN=uid.MCDS,DISP=OLD
           //SOURCE    DD    DSN=uid.MCDS,DISP=OLD,AMP=AMORG
           //DASD      DD    DSN=uid.MCDS.BACKUP.V0000106,
           //                DISP=OLD
           //SYSPRINT  DD    SYSOUT=*
           //SYSIN     DD    *
                       IMPORT-
                         INFILE(DASD)-
                         OUTFILE(SOURCE)-
                         INTOEMPTY-
                         PURGE
           /*
  6. Restart DFSMShsm in emergency mode, EMERG=YES, in the processing unit from which you will issue the UPDATEC command.
    Recommendation: On the restart, ensure that your ARCCMDxx parmlib member is set correctly with either of the following specification:
    • SETSYS EMERG is specified.
    • Neither SETSYS EMERG nor SETSYS NOEMERG is specified.
    If you follow either of the above recommendations, then the EMERG=YES specification will not be overridden by your ARCCMDxx member.
  7. Use the UPDATEC command to combine the entries from the journal data set with the entries from the recovered control data set. (See Updating recovered control data sets using UPDATEC.) When you use this command, the backup version number of the journal data set is one greater than that of the backup version control data set used in step 5. You must concatenate the journal backup data set name that you received in the ARC0375I message in step 1 with the version number, and use that as the journal parameter of the UPDATEC command.

    If you need to use multiple backup versions of the journal data set to recover a control data set, be sure you apply the backup versions in the correct order (oldest to newest).

  8. Stop and restart DFSMShsm in emergency mode, EMERG=YES, from the processing unit from which you issued the UPDATEC command.
    Recommendation: On the restart, ensure that your ARCCMDxx parmlib member is set correctly with either of the following specification:
    • SETSYS EMERG is specified.
    • Neither SETSYS EMERG nor SETSYS NOEMERG is specified.
    If you follow either of the above recommendations, then the EMERG=YES specification will not be overridden by your ARCCMDxx member.
  9. Verify that the control data sets are correct. (See Determining if control data sets are accurate.)
  10. Fix any errors in the control data sets. (See Repairing errors in the control data sets.)
  11. If you are recovering the MCDS, issue a QUERY CDSVERSIONBACKUP to ensure that the latest final qualifier is the same as that shown in step 1. If you do not have the output from the QUERY command in step 1, you can determine the final qualifier of the latest backup copy from your catalog using the LISTCAT LEVEL command, as shown in the following example:
    LISTCAT LEVEL(uid)
    If these qualifiers do not match, use the FIXCDS patch command to correct the field at offset X'B1' in the MHCR record to reflect the latest version in the catalog, as shown in the following example:
    FIXCDS S MHCR PATCH(X'B1' 0000007)
  12. Use the CONTROLDATASETS parameter of the BACKVOL command to get a current backup copy of the control data sets and journal data set.
  13. If the backup of the control data sets was successful, you can issue a SETSYS NOEMERG command, and release DFSMShsm's automatic functions with a RELEASE ALL command.
  14. Restart DFSMShsm in the other processing units.