DB2 Disaster Recovery Options
All DB2 VSAM datasets will be recovered by the disaster team as of the prior Sunday
to the disaster.
All DB2 tablespace will be started with utility access at the disaster site.
Recovery Option #1 - Basic Recovery using DSN1COPY
When to use:
1. When recovery always uses the most current image copy on catalog
.does not required manual JCL changes to run (ie. dataset generation number)
2. Backup is a DB2 image copy
3. This method must be used, when image copy is more current than what in DB2
catalog (ie. SYSIBM.SYSCOPY)
Backup procedure:
1. Start the tablespace with access utility
.this prevents anyone from updating the table during your back up (ie. prevents
backups with partial updates)
.an asterisk maybe used instead of the tablespace name
.an asterisk would indicate all tablespace within the database
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database_name) SPACENAM(tablespace_name) ACCESS(UT)
END
2. Quiesce the tablespace
.an Quiesce establishes a quiesce point (current log rba) for a tablespace
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//SORTOUT DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK01 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK02 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK03 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK04 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SYSUT1 DD UNIT=WORK,SPACE=(4000,(50,50),,,ROUND)
//SYSIN DD *
QUIESCE TABLESPACE database.tablespace_name
3. Run DB2 image copy
.the keyword recoveryddn tells DB2 that this is a recoverysite copy
.the recoverysite backup copy maybe put on dasd, if the backup is made prior
to midnight
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//DSNTRACE DD SYSOUT=*
//BAKCOPY1 DD DSN=***image copy dataset***(+1),
// DISP=(,CATLG,DELETE),
// MGMTCLAS=??????,SPACE=(CYL,(1,1),RLSE)
//DISCOPY1 DD DSN=***disaster image copy dataset***(+1),
// DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// LABEL=(1,SL,,,EXPDT=99000)
//SYSIN DD *
COPY TABLESPACE database.tablespace_name COPYDDN SYSCOPY1
RECOVERYDDN DISCOPY1
4. Re-start the tablespace for read/write
.an asterisk maybe used instead of the tablespace name
.an asterisk would indicate all tablespace within the database
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database_name) SPACENAM(tablespace_name) ACCESS(RW)
END
Recovery procedure:
1. Stop the database
.deallocates files from DB2
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-STOP DATABASE(database_name)
END
2. Run the DSN1COPY recovery
.copies DB2 image copy to DB2 VSAM datasets (similar to DSCOPY)
.format of non-partition DB2 VSAM dataset names:
.vcat.DSNDBC.database_name.tablespace_name.I0001.A001
//STEP01 EXEC PGM=DSN1COPY,PARM='FULLCOPY,RESET'
//SYSPRINT DD SYSOUT=*
//SYSUT2 DD DSN=***db2 vsam dataset***,DISP=SHR
//SYSUT1 DD DSN=***image copy dataset***(00),DISP=SHR
3. Start the database
.allocates files to DB2
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database_name)
4. Recover the indexes
.rebuilds all indexes from DB2 data
.image copies does not include index space
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//SORTOUT DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK01 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK02 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK03 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK04 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SYSUT1 DD UNIT=WORK,SPACE=(4000,(150,50),,,ROUND)
//SYSIN DD *
RECOVER INDEX (ALL) TABLESPACE database.tablespace_name
5. Run image copy
.DB2 will mark the tablespace image copy needed after any recovery
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//DSNTRACE DD SYSOUT=*
//SYSCOPY1 DD DSN=***image copy dataset name***(+1),
// DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// LABEL=(1,SL,,,EXPDT=99000)
//SYSIN DD *
COPY TABLESPACE database.tablespace_name COPYDDN SYSCOPY1
6. Start the tablespace for read/write access
.tablespace are brought up with utility access at the disaster site
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(RW)
END
Recovery Option #2 - Basic Recovery using Recover Tocopy
When to use:
1. Backup is a DB2 image copy
2. Recovery is to a specific image copy
3. Image copy must be known to DB2 (ie. image copy taken prior to DB2 system
recovery )
.DB2 system recovery time may be obtain by calling the disaster command center
Backup procedure:
1. Start the tablespace with access utility
.this prevents anyone from updating the table during your back up (ie. prevents
backups with partial updates)
.an asterisk maybe used instead of the tablespace name
.an asterisk would indicate all tablespace within the database
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(UT)
END
2. Quiesce the tablespace
.an Quiesce establishes a quiesce point (current log rba) for a tablespace
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//SORTOUT DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK01 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK02 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK03 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK04 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SYSUT1 DD UNIT=WORK,SPACE=(4000,(50,50),,,ROUND)
//SYSIN DD *
QUIESCE TABLESPACE database.tablespace_name
3. Run DB2 image copy
.the keyword recoveryddn tells DB2 that this is a recoverysite copy
.the recoverysite backup copy maybe put on dasd, if the backup is made prior
to midnight
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//DSNTRACE DD SYSOUT=*
//BAKCOPY1 DD DSN=***image copy dataset***(+1),
// DISP=(,CATLG,DELETE),
// MGMTCLAS=BMIG00,SPACE=(CYL,(1,1),RLSE)
//DISCOPY1 DD DSN=***disaster image copy dataset***(+1),
// DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// LABEL=(1,SL,,,EXPDT=99000)
//SYSIN DD *
COPY TABLESPACE database.tablespace_name COPYDDN SYSCOPY1
RECOVERYDDN DISCOPY1
4. Re-start the tablespace for read/write
.an asterisk maybe used instead of the tablespace name
.an asterisk would indicate all tablespace within the database
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(RW)
END
Recovery procedure:
1. Determine image copy dataset name (including generation number) to recover to
.this may be done through JobTrack/catalog listings
2. Verify that the image copy dataset is known to DB2
.TSNAME is your tablespace name
.ICBACKUP=RP verifies that this is a recovery site backup
.ICTYPE=F verifies that this is a full image copy (not just changes since last backup)
SELECT TIMESTAMP, DSNAME
FROM SYSIBM.SYSCOPY
WHERE TSNAME = 'SCO88001'
AND ICBACKUP = 'RP'
AND ICTYPE = 'F'
3. Run the recovery utility
.fully qualified dataset name is required.
.this step recovers the tablespace from your image copy and rebuilts all the
indexes
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//SORTOUT DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK01 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK02 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK03 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK04 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SYSUT1 DD UNIT=WORK,SPACE=(4000,(150,50),,,ROUND)
//SYSIN DD *
RECOVER TABLESPACE database.tablespace_name
TOCOPY ***image copy dataset name***
RECOVER INDEX (ALL) TABLESPACE database.tablespace_name
4. Run image copy
.DB2 will mark the tablespace image copy needed after any recovery
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//DSNTRACE DD SYSOUT=*
//SYSCOPY1 DD DSN=***image copy dataset***(+1),
// DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// LABEL=(1,SL,,,EXPDT=99000)
//SYSIN DD *
COPY TABLESPACE database.tablespace_name COPYDDN SYSCOPY1
5. Start the tablespace for read/write
.tablespace are brought up with utility access at the disaster site
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(RW)
END
Recovery Option #3 - Basic Recovery using ADRDSSU
When to use:
1. When backups are made from ADRDSSU backups
.DB2 loads/reorgs/recovery will mark the tablespace with image copy needed
.ADRDSSU does not have interface with DB2, therefore its use will not turn off
the image copy needed switch
.Only a DB2 image copy will turn off the image copy needed switch
.ADRDSSU maybe used for "reference" type tables that are never updated
Backup procedure:
1. Stop the database
.stopping the database would deallocate the DB2 VSAM datasets from DB2
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-STOP DATABASE(database)
END
2. Run the ADRDSSU backup
.this will backup the tablespace and all the indexspaces
.should only be used for "reference" type tables, where updates are not valid
//STEP01 EXEC PGM=ADRDSSU
//SYSPRINT DD SYSOUT=*
//BKUP1 DD DSN=***backup dataset***(+1),DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// DCB=(D0744.DFDSS,TRTCH=COMP)
//DIS1 DD DSN=***disaster dataset***(+1),DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// DCB=(D0744.DFDSS,TRTCH=COMP)
//SYSIN DD *
DUMP OUTDDNAME(BKUP1,DIS1) -
OPTIMIZE(4) WAIT(0 0) SHR TOLERATE(ENQFAILURE) -
DATASET(INCLUDE(**vsam_dataset_name**))
3. Start the database
.starting the database will allocate the DB2 VSAM datasets to DB2
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-STOP DATABASE(database)
END
Recovery procedure:
1. Stop the database
.stopping the database will deallocate the DB2 VSAM datasets from DB2
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-STOP DATABASE(database)
END
2. Run the ADRDSSU recovery
.V9747.DSNDBC.DCO88001 maybe replaced by **, if restoring everything on the
backup tape
.use option SPHERE if backup contains VSAM alternate indexes
//STEP01 EXEC PGM=ADRDSSU
//SYSPRINT DD SYSOUT=*
//TAPE1 DD DSN=***backup datset***(00),DISP=OLD
//SYSIN DD *
RESTORE INDDNAME(TAPE1) -
REPLACE -
DATASET(INCLUDE(***vsam dataset***))
3. Start the database and tablespace in read/write access
.start database will allocate the DB2 VSAM file back to DB2
.the start database with access(RW) will put it in read/write status
.a DB2 image copy is not necessary because DB2 has no interface with ADRDSSU,
therefore DB2 had no knowledge that a recovery was done
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(RW)
END
Recovery Option #4 - Forward Recovery
When to use:
1. Forward recovery is required (using most current image copy and apply all updates
using DB2 logs)
2. This procedure will only use image copies known to DB2, image copies created
since DB2 system backups will not be used
Backup procedure:
1. Start the tablespace with access utility
.this prevents anyone from updating the table during your back up (ie. prevents
backups with partial updates)
.an asterisk maybe used instead of the tablespace name
.an asterisk would indicate all tablespace within the database
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(UT)
END
2. Quiesce the tablespace
.an Quiesce establishes a quiesce point (current log rba) for a tablespace
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//SORTOUT DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK01 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK02 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK03 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK04 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SYSUT1 DD UNIT=WORK,SPACE=(4000,(50,50),,,ROUND)
//SYSIN DD *
QUIESCE TABLESPACE database.tablespace_name
3. Run DB2 image copy
.the keyword recoveryddn tells DB2 that this is a recoverysite copy
.the recoverysite backup copy maybe put on dasd, if the backup is made prior
to midnight
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//DSNTRACE DD SYSOUT=*
//BAKCOPY1 DD DSN=***image copy datset***(+1),
// DISP=(,CATLG,DELETE),
// MGMTCLAS=BMIG00,SPACE=(CYL,(1,1),RLSE)
//DISCOPY1 DD DSN=***disaster image copy dataset***(+1),
// DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// LABEL=(1,SL,,,EXPDT=99000)
//SYSIN DD *
COPY TABLESPACE database.tablespace_name COPYDDN SYSCOPY1
RECOVERYDDN DISCOPY1
4. Re-start the tablespace for read/write
.an asterisk maybe used instead of the tablespace name
.an asterisk would indicate all tablespace within the database
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(RW)
END
Recovery procedure:
1. Run the recovery utility
.this step recovers the tablespace and indexspace from the last image copy
known to DB2 and apply updates from DB2 logs
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//SORTOUT DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK01 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK02 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK03 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK04 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SYSUT1 DD UNIT=WORK,SPACE=(4000,(150,50),,,ROUND)
//SYSIN DD *
RECOVER TABLESPACE database.tablespace_name
RECOVER INDEX (ALL) TABLESPACE database.tablespace_name
2. Run image copy
.DB2 will mark the tablespace image copy needed after any recovery
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//DSNTRACE DD SYSOUT=*
//SYSCOPY1 DD DSN=***image copy dataset***(+1),
// DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// LABEL=(1,SL,,,EXPDT=99000)
//SYSIN DD *
COPY TABLESPACE database.tablespace_name COPYDDN SYSCOPY1
3. Start the tablespace for read/write
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem_name)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(RW)
END
Recovery Option #5 - Forward Recovery using RBA
When to use:
1. When recovery is not to a backup, but a RBA
.RBA (relative byte address) maybe used as a recovery point, instead of an image
copy (full or partial)
.RBA are created by a quiesce of the tablespace
.for infrequently updated tables, you may chose to quiesce the tablespace instead
of running a full or partial image copy
.DB2 does not have the capability for backing out normal completion updates
.as an alternative, your application may:
a. run an image copy
b. run update job a
c. quiesce tablespace
d. run update job b
e. determined that update job b was incorrectly run due to bad control card
f. run forward recovery to RBA from quiesce made in step c
Backup procedure:
1. Start the tablespace with access utility
.this prevents anyone from updating the table during your back up (ie. prevents
backups with partial updates)
.an asterisk maybe used instead of the tablespace name
.an asterisk would indicate all tablespace within the database
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(UT)
END
2. Quiesce the tablespace
.an Quiesce establishes a quiesce point (current log rba) for a tablespace
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem'
//SORTOUT DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK01 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK02 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK03 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SORTWK04 DD UNIT=WORK,SPACE=(4000,(20,20),,,ROUND)
//SYSUT1 DD UNIT=WORK,SPACE=(4000,(50,50),,,ROUND)
//SYSIN DD *
QUIESCE TABLESPACE database.tablespace_name
3. Re-start the tablespace for read/write
.an asterisk maybe used instead of the tablespace name
.an asterisk would indicate all tablespace within the database
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(RW)
END
Recovery procedure:
1. Determine recovery point (date & time)
.this may be done with use of JobTrack/SoftJCL
2. Obtain RBA to recover from SYSIBM.SYSCOPY
.compare recovery point date/time from above to timestamp of RBA
SELECT TIMESTAMP, HEX(START_RBA)
FROM SYSIBM.SYSCOPY
WHERE ICTYPE = 'Q'
AND TSNAME = 'tablespace_name'
ORDER BY TIMESTAMP DESC
3. Run the recovery utility
.this step recover the tablespace and indexes to the RBA specified
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem_name'
//SORTOUT DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK01 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK02 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK03 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SORTWK04 DD UNIT=WORK,SPACE=(4000,(120,20),,,ROUND)
//SYSUT1 DD UNIT=WORK,SPACE=(4000,(150,50),,,ROUND)
//SYSIN DD *
RECOVER TABLESPACE database.tablespace_name TORBA X'0038E632D20E'
RECOVER INDEX (ALL) TABLESPACE database.tablespace_name
4. Run image copy
.DB2 will mark the tablespace image copy needed after any recovery
//STEP01 EXEC DSNUPROC,SYSTEM='subsystem'
//DSNTRACE DD SYSOUT=*
//SYSCOPY1 DD DSN=***image copy dataset***(+1),
// DISP=(,CATLG,DELETE),
// UNIT=TAPE,
// LABEL=(1,SL,,,EXPDT=99000)
//SYSIN DD *
COPY TABLESPACE database.tablespace_name COPYDDN SYSCOPY1
5. Start the tablespace for read/write
.tablespace are brought up with utility access at the disaster site
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM(subsystem)
-START DATABASE(database) SPACENAM(tablespace_name) ACCESS(RW)
END