Recovery of databases

If a database is physically lost or damaged in such a way that records in it become inaccessible, you can reconstruct the database from the information you have been keeping: image copies, logs, and so forth. This type of recovery is known as forward recovery.

Definition: Forward recovery involves reconstructing information and reapplying it to a backup copy of the database. It is based on the notion that if you knew what the data was like at one time and you know what changes have been made to it since then, you can process the data to return the database to the state it was in just before it was lost.

The following figure illustrates this concept. You know what the database was like at one time, because you made a backup copy of it. You know what changes (additions, deletions, alterations) have been made to the database since the backup copy was made, because IMS has been recording these changes on the log. Therefore, you only need to combine the two, and create a new data set to replace the database you have lost.

Figure 1. Database reconstruction (forward recovery)
This figure illustrates forward recovery of a database by starting with a backup copy and applying the changes since the backup.

IMS provides the Database Recovery utility (DFSURDB0) to perform forward recovery. The following figure illustrates how the utility works.

Additionally, if you have the IBM® IMS Database Recovery Facility for z/OS® product installed, IMS provides the /RECOVER command to invoke the tool from within IMS.

Figure 2. Recovering a database using the IMS Database Recovery utility (DFSURDB0)
begin figure description. This figure illustrates the Database Recovery utility taking the various data sets, the DBD library, a recent image copy, and the control statement inputs to generate the recovered data set. end figure description.
Restriction: DBRC is unable to generate JCL for recovering databases that are not registered with DBRC. You can use the LIST.LOG command (or DSPAPI FUNC=QUERY API request) to produce a listing of current OLDSs, RLDSs, and SLDSs. Using this command lets you check manually that the JCL you are using for change accumulation or database recovery contains DD statements for all active log data sets. You can also use the LIST.LOG command (or DSPAPI FUNC=QUERY API request) when you use DBRC batch log control.
Recommendation: Do not supply logs or change accumulation input when running the Database Recovery utility for nonrecoverable DBDSs.

The Database Recovery utility and database recovery service perform database recovery at the data set level. Usually, only a single data set of the database requires recovery. If more than one data set has been lost or damaged, you need to recover each one separately if you are using the Database Recovery utility. If you are using the database recovery service, all the lost or damaged data sets can be recovered in one recovery operation.

With DEDBs, using multiple area data sets reduces the need for recovery. If one copy has an I/O error, you can create another copy online and drop the error copy.