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:
- 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.
- 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.
// 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)
/*
Related topic