FDRMOVE MOVE function with examples


The MOVE function of FDRMOVE moves the selected data sets when each of them becomes inactive, such as when batch jobs using the data sets finish, or TSO users log off. Normally, regular read/write I/O is used to move the data sets so larger data sets may be unavailable for longer periods. For this reason, MOVE is used for data sets that can tolerate being unavailable for longer periods than the data sets selected for FASTMOVE.

A single FDRMOVE job can process many volumes, but if you wish to reduce the total elapsed time, you can start multiple FDRMOVE jobs, each processing different input volumes.

In many installations, 90% of the data sets are inactive (not in use) or become inactive over some period of time. These data sets typically remain inactive for a long period of time. MOVE automates the process of moving these data sets with little or no impact. If a job needs the data set while it is being moved, it usually waits for it.

SELECT statements identify the data sets to be moved and the new volume(s) to move them onto. You can move:

  • Entire volumes (all data sets on selected input volumes). This is especially useful when you want to combine specific small volumes onto one or more larger volumes.
  • All data sets on one or more volumes that are below a certain size. Testing has shown that moving small data sets with normal I/O is often faster than using instant replication technology to move them.
  • Specified data sets, selected by name and volume serial or SMS storage group or optionally from the catalog.

MOVE identifies all of the input volumes according to your specifications. It then begins moving inactive data sets from each volume, up to eight volumes concurrently per FDRMOVE job. When it has completed this first pass of all volumes, it begins waiting for active data sets to become available.

MOVE attempts to move each selected data set, but if the data set is active (a SYSDSN enqueue exists for the data set), and then it is bypassed. MOVE periodically tests each enqueued data set to see if it has become free, and if so moves it. The MOVE job can run for hours or days if needed, selecting data sets as they become free, until all selected data sets have been moved, or you terminate the FDRMOVE step. The MOVE function usually uses normal read/write I/O to move the data  sets, but it may also use instant replication functions like FlashCopy and EMCSNAP if the source and target DASD volumes are in the same subsystem.

Moved data sets are allocated and cataloged on the output volume, and scratched from the input volume. FDRMOVE holds an exclusive SYSDSN enqueue on each data set while it is actually moving it, so each data set is not available while it is being moved, but is immediately available as soon as it is moved. FDRMOVE offers a Dynamic Allocation exit to prevent dynamic allocation from failing if a job needs a data set while it is being moved. With the FDRMOVE Dynamic Allocation exit installed, failed dynamic allocations are monitored and if it is found that the failure is caused by a data set that is actively being moved by FDRMOVE, this dynamic allocation is intercepted and delayed. This delay is comparable to a recall of an archived data set when a task requires a data set that was archived. See Dynamic Exit Installation Procedure for details on installing the exit and the options available for this exit. This exit works for both MOVE and FASTMOVE processes, but since the FASTMOVE process is moving data sets with “Instant” technology, the “window” of contention is less for FASTMOVE.

Warning

Important

The MOVE job consists of a simple PGM=FDRMOVE step, invoking the MOVE function. Unlike FASTMOVE, no other jobs are required. You may also be able to improve performance (more volumes processed concurrently) by running multiple MOVE jobs selecting different subsets of the data to be moved, they can use the same target volumes.

You can monitor the progress of MOVE with the console “F movejob,STATUS” command or the FDRMOVE ISPF panel. See MODIFY Status Command.

MOVE examples

Here are a number of examples of the FDRMOVE MOVE function. All examples in this section are found in the JCL library installed with FDRPAS. The member names are PA32503x.

Consolidate DASD - example

This is an example of a MOVE to consolidate (60) 3390-9 input volumes to (22) 3390-27 output volumes.

The default of MAXTASKS=8 allows eight input volumes to be processed concurrently using internal subtasks. All data sets on the input volumes are moved immediately if they are not active (SYSDSN enqueue). Active data sets are retried at 15-second intervals; as soon as they become inactive, they are moved.

FDRMOVE terminates automatically if all selected data sets have been moved. However, if some data sets never become inactive, STOPINACTIVE=480 causes FDRMOVE to automatically terminate if it has been idle (not moving data sets) for a cumulative time of 480 minutes (8 hours).

//FDRMOVE  EXEC PGM=FDRMOVE,REGION=0M,TIME=1440//STEPLIB  DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//FDRSUMM  DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//SYSIN    DD *  MOVE     TYPE=DSF,DISABLENEW=YES,STOPINACTIVE=480  SELECT   ALLDSN,VOL=IN0001,NVOL=(OUT001,OUT002,…,OUT022)  SELECT   ALLDSN,VOL=IN0002,NVOL=(OUT001,OUT002,…,OUT022)  SELECT   ALLDSN,VOL=IN0003,NVOL=(OUT001,OUT002,…,OUT022)  …  SELECT   ALLDSN,VOL=IN0059,NVOL=(OUT001,OUT002,…,OUT022)  SELECT   ALLDSN,VOL=IN0060,NVOL=(OUT001,OUT002,…,OUT022)/*

The NVOL= list specifies (22) 3390-27 volumes. FDRMOVE round-robins (rotate) the volumes in the NVOL list for each ALLDSN statement. Data sets from IN0001 go to OUT001, IN0002 goes to OUT002, and so on, and IN0023 goes to OUT001, IN0024 goes to OUT002, and so on. Although the contents of the input volumes would usually fit on 20 output volumes, two extra target volumes are provided to handle very full volumes and activity on the target volumes by other jobs.

Consolidate storage group - example

This is an example of a MOVE to consolidate the 3390-9 input volumes in an SMS storage group to 3390-27 output volumes in the same storage group, but in a different control unit. The user has previously added all new volumes in the target control unit to the same SMS storage group.

FDRMOVE terminates automatically if all selected data sets have been moved. DISABLENEW=YES sets all input volumes to DISNEW status so that new allocations go to the output control unit.

//FDRMOVE  EXEC PGM=FDRMOVE,REGION=0M,TIME=1440//STEPLIB  DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//FDRSUMM  DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//SYSIN    DD *  MOVE     TYPE=DSF,DISABLENEW=YES  SELECT   ALLDSN,CUID=12345,STORGRP=DB2APPL,           NEWCUID=54321,NEWSTORGRP=DB2APPL/*

The CUID= operand specifies the serial number of the source control unit and the NEWCUID= operand specifies the serial number of the target control unit. FDRMOVE round-robins (rotate) the volumes in the target control unit for each of the ALLDSN statements that are internally generated.

Warning

Important

If a different SMS storage group is specified for NEWSTORGRP=, change the SELECT statement above to:

SELECT ALLDSN,STORGRP=DB2APPL,NEWSTORGRP=DB2APPL2

Limit by size - example

If you are concerned that large data sets may be unavailable for many minutes while they are being moved, this example shows how to limit MOVE to data sets of 1500 tracks (100 cylinders) or less. A FASTMOVE step can be used to quickly move the larger data sets that remain. See the notes in the first example about NVOL=. If any of the data sets being moved may be dynamically allocated by a job during the move process, it is recommended installing the FDRMOVE Dynamic Allocation exit.

//FDRMOVE  EXEC PGM=FDRMOVE,REGION=0M,TIME=1440//STEPLIB  DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//FDRSUMM  DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//SYSIN    DD *  MOVE     TYPE=DSF,DISABLENEW=YES  EXCLUDE  ALLDSN,SIZE=1500 EXCLUDE DATA SETS > 100 CYLINDERS  SELECT   ALLDSN,VOL=IN0001,NVOL=(OUT001,OUT002,OUT003)  SELECT   ALLDSN,VOL=IN0002,NVOL=(OUT001,OUT002,OUT003)/*

Select from catalog - example

This is an example of a MOVE that selects data sets on specific input volumes by selecting them from the system catalogs. The cataloged data sets selected reside on (30) 3390-3 volumes. They are copied to (11) 3390-9 volumes (this assumes that the input volumes are fairly full with DB2 data; if not, you may be able to use fewer output volumes). FDRMOVE automatically round-robins the NVOL= list for each source volume selected.

If you are unsure how many input volumes are involved, change MOVE to SIMMOVE. The FDR346 message shows how many volumes the CATDSN= selected.

//FDRMOVE  EXEC PGM=FDRMOVE,REGION=0M,TIME=1440//STEPLIB  DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT DD SYSOUT=*//FDRSUMM  DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//SYSIN    DD * MOVE      TYPE=DSF SELECT    CATDSN=DB2.**,NVOL=(OUT001,…,OUT011)/*

Sample MOVE output

These are extracts from the output of an FDRMOVE MOVE step. Data sets that are not active (no SYSDSN enqueue exists for the data set) are moved immediately. The data sets that get the enqueue failure are remembered; they are retried at intervals and as soon as they are no longer active, they are moved.

The inactive data sets are immediately moved to their new volume.

FDR001  FDR PLUG AND SWAP DATA SET      - FDRMOVE VER. 6.1/xxR - BMC Software Inc
FDR303  CARD IMAGE --  MOVE TYPE=DSF
FDR333  CARD IMAGE -- EXCLUDE TEMP                                                       UNMOVABLE TABLE
FDR303  CARD IMAGE --  S CATDSN=DB2.**,NVOL=(OUT001,OUT002,OUT003,OUT004 ,…)
FDR346  FILTER SELECTED      60 VOLUMES IN 0.43 SECS
FDR256  --- REPORT FROM SYSPRIN1 ---
FDR007  STARTING TIME OF DATA SET MOVE   -- 11.26.40 -- IN=D#IN0001
FDR314  FDR SCRATCHED      DSN=DB2.MOVE039.VIN0001.PS.ONETRK.A0005                             FROM VOL=IN0001
FDR311  FDR MOVED    DSN=DB2.MOVE039.VIN0001.PS.ONETRK.A0005         ALLOCATED CATALOGED
FDR311               ON VOLSER=OUT001 UNIT=3390-27 (IN0001)
FDR314  FDR SCRATCHED    DSN=DB2.MOVE039.VIN0001.PS.ONETRK.A0004                               FROM VOL=IN0001
FDR311  FDR MOVED    DSN=DB2.MOVE039.VIN0001.PS.ONETRK.A0004         ALLOCATED CATALOGED
FDR311               ON VOLSER=OUT001 UNIT=3390-27 (IN0001)
FDR007  ENDING TIME OF DATA SET MOVE   -- 11.26.40 -- IN=D#IN0001

A console STATUS request or ISPF panel (see FDRMOVE Console Commands and ISPF Interface) shows the active data sets. FDRMOVE tests the enqueue status of each data set at intervals.

FDR184 -- MOVE STATUS REPORT --
FDR184 VOL=IN0002 AWAITING MOVE FROM IBM76421 TO EMC00547     356 DATASETS TO MOVE
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.MV.KSDS.CLUSTER                   1 JOBS(DB2PROD)
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0002.KSDS.A0001.CLUSTER        2 JOBS(MOVE039Q,MOVE039E)
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0002.PO.A0001                  2 JOBS(MOVE039Q,MOVE039E)
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0002.PS.A0001                  2 JOBS(MOVE039Q,MOVE039E)
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0002.PS.A0002                  1 JOBS(DB2PROD)
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0002.PS.A0004                  1 JOBS(DB2PROD)
FDR184 VOL=IN0003 AWAITING MOVE FROM IBM76421 TO EMC00547       4 DATASETS TO MOVE
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0003.KSDS.A0002.CLUSTER        1 JOBS(DB2PROD)
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0003.PO.A0002                  1 JOBS(DB2PROD)
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0003.PS.A0001                  2 JOBS(MOVE039Q,MOVE039E)
FDR184        |---FOR ACTIVE DSN=DB2.MOVE039.VIN0003.PS.A0002                  1 JOBS(DB2PROD)
FDR184 FDR MOVED       615 DATASETS/COMPONENTS SUCCESSFULLY
FDR184 MOVE STATUS     650 ACTIVE DATASETS    0 AWAITING TRANSIT    0 MOVING TO TRANSIT    0 IN TRANSIT STATION
FDR265 MODIFY COMMAND COMPLETED - STATUS

When data sets become free, they are moved.

FDR314 FDR SCRATCHED   DSN=DB2.MOVE039.VIN0002.PS.A0004                          FROM VOL=IN0002
FDR311 FDR MOVED    DSN=DB2.MOVE039.VIN0002.PS.A0004          ALLOCATED CATALOGED
FDR311              ON VOLSER=SY3100 UNIT=3390-27 (IN0002)
FDR314 FDR SCRATCHED    DSN=DB2.MOVE039.VIN0002.PS.A0002                         FROM VOL=IN0002
FDR311 FDR MOVED    DSN=DB2.MOVE039.VIN0002.PS.A0002          ALLOCATED CATALOGED
FDR311              ON VOLSER=SY3100 UNIT=3390-27 (IN0002)
FDR007 ENDING TIME OF DATA SET MOVE   -- 11.28.08 -- IN=D#SH20C0

When FDRMOVE has moved all selected data sets, it terminates.

FDR184 FDR MOVED      129 DATASETS/COMPONENTS SUCCESSFULLY
FDR999 FDR SUCCESSFULLY COMPLETED

Move within the same storage group - example

Move all data sets from smaller devices to 3390-27 in the same SMS storage group. Since the data set's source and target are in the same SMS storage group, the STORGRP= and NEWSTORGRP= operands cannot both be specified. In this case, FDREPORT is used to obtain the volume information and generate VOL= and NVOL= operands from the SMS storage group that can be used by FDRMOVE.

//FDREPORT  EXEC PGM=FDREPORT,REGION=0M//STEPLIB   DD DISP=SHR,DSN=fdrpas.loadlib//SYSPRINT  DD SYSOUT=*//ABRMAP    DD SYSOUT=*//SYSUDUMP  DD SYSOUT=*//FDRLIB    DD *)PREFIX  SELECT    ALLDSN,VOL=@VLVOLSER#,)ENDPREFIX)CONTVALUES | |,|,|            NVOL=(<VLVOLSER>)/*//ALTMASK   DD UNIT=SYSALLDA,SPACE=(TRK,(10,10))//SYSPUNCH  DD SYSOUT=*//SYSIN     DD *  DEFAULT   SUMDEV=UNIQUE  XSELECT   VLSMSSTG=PROD*  PRINT     DATATYPE=VOLDATA  CANCEL    SELECT  XSELECT   VLSMSSTG=PROD*,VLDEVTYP=3390-27  PUNCH     ECHO  PRINT     DATATYPE=VOLDATA,RPTYPE=SELPCH,PCHDD=ALTMASK  CANCEL    SELECT  DEFAULT   FIELDPREFIX=@,FIELDSUFFIX=#  XEXCLUDE  VLDEVTYP=3390-27  XSELECT   VLSMSSTG=PROD*,VLDEVTYP=(3390-2,3390-3)  PUNCH     FDRLIB=ALTMASK,ECHO  PRINT     DATATYPE=VOLDATA,RPTYPE=SELPCH/*

This is an example of the output that would be generated on the SYSPUNCH by this FDREPORT job:

SELECT ALLDSN,VOL=SYSLB6,
NVOL=(VTS017,VTS018,VTS019,VTS020,VTS021,VTS022,VTS023,VTS024,VTS025,
 VTS026,VTS027,VTS028,VTS029,VTS030,VTS031,VTS032,SYTS45,SYTS46,SYTS47,
 SYTS48)
SELECT ALLDSN,VOL=SYSLB2,
NVOL=(VTS017,VTS018,VTS019,VTS020,VTS021,VTS022,VTS023,VTS024,VTS025,
 VTS026,VTS027,VTS028,VTS029,VTS030,VTS031,VTS032,SYTS45,SYTS46,SYTS47,
 SYTS48)
SELECT ALLDSN,VOL=IDPLB6,
NVOL=(VTS017,VTS018,VTS019,VTS020,VTS021,VTS022,VTS023,VTS024,VTS025,
 VTS026,VTS027,VTS028,VTS029,VTS030,VTS031,VTS032,SYTS45,SYTS46,SYTS47,
 SYTS48)
SELECT ALLDSN,VOL=SYSLB3,
NVOL=(VTS017,VTS018,VTS019,VTS020,VTS021,VTS022,VTS023,VTS024,VTS025,
 VTS026,VTS027,VTS028,VTS029,VTS030,VTS031,VTS032,SYTS45,SYTS46,SYTS47,
 SYTS48)


 

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

BMC AMI Storage FDRPAS 6.1