Although Image Copy files already can be created very fast by using CA's Database Copier (DBCOPY), a large number of database datasets to be image copied still results in much time being needed to create all the backup files. DBCOPY's "asynchronous processing" significantly shortens the overall elapsed time being needed to image copy an entire group of related database datasets.
What does it do?
When more than one database dataset has to be image copied in one single DBCOPY jobstep, all backup datasets will be created successively one after another, i.e. the subtask to create the next image copy doesn't start before the previous subtask has finished.
With "asynchronous processing" switched on, the subtasks to copy the different database datasets are running in parallel, using resources which are currently not needed by any other subtask. While the time being needed for each single image copy task is not reduced, the overall elapsed time for all overlapping subtasks actually will be much shorter.
How will it be activated?
To image copy more than one database dataset in one single DBCOPY step, use "FUNCTION=ACOPY" (instead of "FUNCTION=COPY") for those datasets which should be image copied concurrently.
For more details about "DBCOPY asynchronous processing" see
https://docops.ca.com/ca-database-management-solutions-for-ims-for-z-os/19-0/en/backing-up-and-recovering-databases/ca-database-copier-for-ims/using-ca-database-copier/creating-asynchronous-image-copies
Limitations
Because several image copy subtasks are running concurrently, the z/OS address space could become short-on-storage, resulting in abending the entire DBCOPY execution. Use DBCOPY option TASKLIMIT=n to limit the max number of concurrently running subtasks to avoid short-on-storage conditions with asynchronous processing.
For more details about the TASKLIMIT option see
https://docops.ca.com/ca-database-management-solutions-for-ims-for-z-os/19-0/en/backing-up-and-recovering-databases/ca-database-copier-for-ims/customizing-ca-database-copier-jcl/ca-database-copier-control-statements-reference/tasklimit-dbc-define-task-limits
Example
//DBCOPY EXEC PGM=IDIDBO,REGION=0M
//STEPLIB DD DSN=ca.imstools.CIMTLOAD,DISP=SHR
// DD DISP=SHR,DSN=ims.SDFSRESL
//DFSRESLB DD DISP=SHR,DSN=ims.SDFSRESL
//IMS DD DISP=SHR,DSN=ims.DBDLIB
//dd1 DD DISP=SHR,DSN=hlq.dbd.dd1
//dd2 DD DISP=SHR,DSN=hlq.dbd.dd2
//ddn DD DISP=SHR,DSN=hlq.dbd.ddn
//DBC1 DD DSN= hlq.dbd.dd1.DBC,DISP=(,CATLG,DELETE),
// STORCLAS=***,SPACE=(CYL,(n,m),RLSE)
//DBC2 DD DSN= hlq.dbd.dd2.DBC,DISP=(,CATLG,DELETE),
// STORCLAS=***,SPACE=(CYL,(n,m),RLSE)
//DBCn DD DSN= hlq.dbd.ddn.DBC,DISP=(,CATLG,DELETE),
// STORCLAS=***,SPACE=(CYL,(n,m),RLSE)
//DBOMSGS DD SYSOUT=*
//DBORPTS DD SYSOUT=*
//DBOCTRL DD *
FUNCTION=ACOPY,DBDNAME=dbd1,DDNAME=dd1,DBRC=N,COPY1DDNAME=DBC1,
TASKLIMIT=nn
FUNCTION=ACOPY,DBDNAME=dbd2,DDNAME=dd2,DBRC=N,COPY1DDNAME=DBC2,
TASKLIMIT=nn
FUNCTION=ACOPY,DBDNAME=dbdn,DDNAME=ddn,DBRC=N,COPY1DDNAME=DBCn,
TASKLIMIT=nn