Information
Space announcement We are no longer updating this space, and you cannot comment on this space. The IMAGE COPY PLUS component is now documented in BMC AMI Backup and Recovery for IMS.

Checking pointers in a full-function database


After you have generated an image copy, you usually want to verify both the logical and the physical pointers in the database to ensure that the copy is valid for recovery.

You can use the Concurrent Pointer Checking function to check the pointers in a full-function database concurrently with the image copy process. By performing the required I/O operations to perform the image copy and check pointers at the same time, you can save a considerable amount of time and system resources.

How it works

When you use the Concurrent Pointer Checking function for full-function databases, the Image Copy utility invokes the Hash Checking technique to verify the validity of both logical and physical pointers.

The Hash Checking technique is a function of the BMC AMI Pointer Checker for IMS (Pointer Checker) product, the BMC AMI Reorg for IMS
 solution products, and BMC AMI Backup and Recovery for IMS. Complete information about the Hash Checking technique is located in BMC AMI Pointer Checker for IMS documentation.

During execution of the Image Copy utility, option values are passed to the Hash Checking technique in the same way as if it was running independently. You can use both a PCP options module and a PCPSYSIN DD statement to control option values.

You can use the PCP RETCODE(nnnn) keyword to specify the return code to pass back to the Image Copy utility if the Hash Checking technique discovers an error.

You can also use the Concurrent Pointer Checking function to check the pointers in a full-function database data set without creating an output image copy. This feature may be useful if you want to check pointers in indexes at the same time that the utility is performing an image copy of the source database.

Requirements and considerations

Concurrent pointer checking of full-function databases requires the following BMC product or products:

  • BMC AMI Backup and Recovery for IMS; no additional products are required for concurrent pointer checking during image copy or recovery processing
  • IMAGE COPY PLUS (ICP) and Pointer Checker

The Concurrent Pointer Checking function supports all features of the Image Copy utility except the Image Copy by Volume (VOLCOPY) option. However, if you choose to check pointers without creating an output image copy as specified with PCP(O), you cannot specify the VIC(Y) keyword.

The STEPLIB concatenation in the JCL must include the appropriate product load modules.

If you are using the Incremental Image Copy (IIC) function and the change accumulation you are using as input represents a valid DBRC recovery point, the function produces a valid batch image copy; the Concurrent Pointer Checking function should indicate no pointer errors. If the change accumulation does not represent a valid DBRC recovery point, the function produces a 'fuzzy' image copy; pointer errors should be expected.

Requesting pointer checking for full-function databases

Use the PCP keyword to control whether to perform pointer checking of full-function databases concurrently with the image copy process.

Procedure

Perform the following steps to invoke the Concurrent Pointer Checking function for full-function databases:

  1. Specify the PCP(Y) keyword on a valid control statement or in an options module. Or, if you want to perform hash checking of pointers without writing an image copy data set, specify the PCP(O) keyword on a function control statement.
  2. Specify a PCPSYSIN DD statement. See BMC AMI Pointer Checker for IMS documentation for instructions.

Example

The following example invokes the Hash Checking technique to verify pointers in a full-function database at the same time as the Image Copy utility performs the Image Copy function.

//PTRCHECK JOB (ACCOUNT DATA),'PCP HASH',
//         class="A",MSGCLASS=A
//ICP      EXEC PGM=ICPUMAIN,REGION=4096K
//STEPLIB  DD DSN=BMC.xxx.LOAD,DISP=SHR
//         DD DSN=IMS.RESLIB,DISP=SHR
//DFSRESLB DD DSN=IMS.RESLIB,DISP=SHR
//IMS      DD DSN=IMS.DBDLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//PDX      DD DSN=BMC.PDX,DISP=SHR
//DBICM021 DD DSN=DBICM02.DSG1,DISP=OLD
//DBICM022 DD DSN=DBICM02.DSG2,DISP=OLD
//IMAGOUT1 DD DSN=DBICM02.DSG1.COPY1,
//            DISP=(,CATLG,CATLG),UNIT=SYSDA,
//            SPACE=(CYL,(60,10),RLSE)
//IMAGOUT2 DD DSN=DBICM02.DSG2.COPY1,
//            DISP=(,CATLG,CATLG),UNIT=SYSDA,
//            SPACE=(CYL,(60,10),RLSE)
//ICPSYSIN DD  *
  GLBL PCP(Y) ...                        <=== PCP
  AIC  DBD(DBICM02) DDN(DBICM021) IC(IMAGOUT1)
  AIC  DBD(DBICM02) DDN(DBICM022) IC(IMAGOUT2)
/*
//PCPSYSIN DD *                          <=== PCP
  GLBL  RETCODE(8) REPORTS(ALL) IMSID(BMC1)
/*



 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*

IMAGE COPY PLUS 5.1