I am posting today’s blog entry from Athens, Greece as I participate in the European IDUG conference. Good thing I know how to use the Blogger site because when I log in over here in Greece the text on their site is all converted into Greek - and as I'm sure comes as no surprise to anyone, I don't understand Greek!
Anyway, today's post will be about the improvements IBM has made to the BACKUP SYSTEM and RESTORE SYSTEM utilities in DB2 9 for z/OS. And this will be the final entry in this series on Version 9 features discussing utility improvements… it will not be the last in the series on V9 improvements though, just the last one on the utilities.
Also, please keep in mind that these blog posts are meant to deliver a flavor of the new functionality in DB2 9 for z/OS. They will not cover every nuance and detail of what V9 has to offer. With that said, let’s dive into the enhancements to the BACKUP and RESTORE SYSTEM utilities.
Overview
As most of you surely know, BACKUP SYSTEM and RESTORE SYSTEM were are relatively new utilities, added to DB2 as of Version 8. They use disk volume FlashCopy backups and copypool z/OS DFSMShsm V1R5 constructs to copy and restore large volumes of DB2 data. In DB2 V9 these utilities are enhanced to use new functions available with z/OS V1R8 DFSMShsm.
Recovery of Individual Database Objects
In V9, backups produced by BACKUP SYSTEM (aka system level backups) can be used to recover individual table spaces or index spaces. This is helpful because previously you had to recover the entire system, and that is not always what is necessary.
When you wish to recover a subset of a system level backup you will use the RECOVER utility instead of RESTORE SYSTEM. Before your RECOVER jobs can use system level backups you must first set the SYSTEM_LEVEL_BACKUPS DSNZPARM option to YES. This can be set from the DSNTIP6 install panel. If you specify YES then your system-level backups will be considered in object level recoveries (along with your other image copy backups).
If you wish to use your system level backups for individual database object recoveries then you need to make sure that you are copying your indexes (specifying COPY YES).
Why would you want to use your system level backups in this way? Well, doing so should enable you to reduce the frequency with which you are taking conventional image copies. If you take a daily system level backup, then the database objects that you were also backing up on a daily basis may not be required. Of course, you cannot completely forgo all individual image copies because the system level backup timing may not conform to the timing needed for each object based on application requirements, and of course, image copies will still be needed after running utilities like LOAD REPLACE and REORG LOG NO to resolve copy pending situations.
Tape Support for BACKUP SYSTEM
DB2 V9 also delivers the ability for the BACKUP SYSTEM utility to copy the data directly to tape. The new parameters allowing this capability are the DUMP and DUMPONLY options.
The output of the DUMP or DUMPONLY is directed to a DFSMShsm dump class, which specifies the unit type the data will be directed to. Although IBM implemented this change to enable tape support, an SMS dump class is not restricted to tape.
Keep in mind that directing data to tape will have an impact on the speed of your restore. Restoring from tape will not be as fast as restoring from a FlashCopy made to disk. Of course, having your data on tape can help in terms of storage management, disaster recovery and off-site data storage, and long-term data retention. So be aware of these trade-offs before creating system level backups on tape.
Additionally, recognizing that copying data to tape can be time-consuming IBM has added a new keyword, FORCE, to enable a new backup to be started even if a previous DUMP has not yet completed. Of course, FORCE should not be used all the time - - only be used when it is very critical that a new backup be started.
Incremental FlashCopy
And finally, support for incremental copying has been added to FlashCopy. So now you can take a system level backup and then subsequent incremental system level backups. An incremental FlashCopy will copy only the tracks that have changed on the source volume since the last copy was taken. But unlike a typical incremental image copy, the previous content on the volume(s) will be replaced by the new content. That means there is no merging of incrementals required; essentially, the merge is part of the incremental FlashCopy.
I won’t go into all of the gory details here but this new functionality can greatly minimize I/O activity for system level backups.
Summary
So, to sum things up, the ability to work with system level backups becomes easier in V9 because you can recover individual table spaces and indexes from a system level backup without having to restore the entire backup, you can make system level backups directly to tape, and we get the ability to do incremental system level backups. All in all, some nice new features for BACKUP SYSTEM and RESTORE SYSTEM, wouldn't you say?
So impressive and effective!
ReplyDeleteI faced an error while recovering a individual Tablespace fromm System level backup.
ReplyDelete00:02:29.84 DSNUGUTC - LISTDEF RCVR4_LIST INCLUDE TABLESPACES TABLESPACE PR40X
00:02:29.84 DSNUILDR - LISTDEF STATEMENT PROCESSED SUCCESSFULLY
00:02:29.84 DSNUGUTC - RECOVER LIST RCVR4_LIST RESTOREBEFORE X'C378770593EA' F
00:02:29.94 DSNUGULM - PROCESSING LIST ITEM: TABLESPACE PR40XAAA.TSP01
362 00:02:30.20 DSNUCALA - NO RECOVERY BASE AVAILABLE FOR RECOVERY OF
TABLESPACE PR40XAAA.TSP01
362 00:02:30.99 DSNUCALA - FAST LOG APPLY WAS NOT USED FOR RECOVERY
362 00:02:30.99 DSNUCALA - NO RECOVERY BASE WAS AVAILABLE AND
THERE ARE NO UPDATES TO APPLY FROM
THE DB2 LOG FOR TABLESPACE PR40XAAA.TSP01 DSNUM 0
00:02:30.99 DSNUCBLA - LOG APPLY PHASE COMPLETE, ELAPSED TIME = 00:00:00
362 00:02:31.03 DSNUGSRX - TABLESPACE PR40XAAA.TSP01 IS IN RECOVER PENDING
00:02:31.03 DSNUCBDR - RECOVERY COMPLETE, ELAPSED TIME=00:00:01
00:02:31.05 DSNUGBAC - UTILITY EXECUTION TERMINATED, HIGHEST RETURN CODE=8
What's the real issue behind this error?