Recovery for intrapartition transient data

This section deals with both backward and forward recovery of intrapartition transient data.

Backward recovery

CICS® can recover only intrapartition transient data. The intrapartition data set is a VSAM-ESDS data set, with a file name of DFHINTRA. (For more information about allocation and space requirements, see the CICS System Definition Guide.) For extrapartition transient data considerations, see Recovery for extrapartition transient data.

You must specify the name of every intrapartition transient data queue that you want to be recoverable in the queue definition. The recovery attributes you can specify for an intrapartition transient data queue are:

Logical recovery

If you request logical recovery on an intrapartition queue definition, changes to a transient data queue by an interrupted UOW are backed out. Backout occurs dynamically in the case of a task abend, or at a CICS emergency restart in the case of a CICS failure.

As a general rule, you should request logical recoverability. For example, if you make related changes to a set of resources that includes intrapartition transient data, and you want to commit (or back out) all the changes, you require logical recovery.

Physical recovery

Physical recoverability is unique to transient data and is effective on both warm and emergency restarts. By requesting physical recovery on an intrapartition queue definition, you ensure that changes to the queue are committed immediately and, with one exception, are not backed out.

The exception is in the case of the last read from a physically recoverable queue before a unit of work fails. CICS always backs out the last read from a physically recoverable transient data queue. In terms of the read and write pointers that CICS maintains for TD queues, this means that the read pointer is reset, but the write pointer never changes. This is illustrated by the diagram in Figure 12. The sequence of TD actions in this example, and the subsequent recovery, is as follows:

Figure 12. Illustration of recovery of a physically recoverable TD queue
 This diagram shows the two situations described in the preceding text: (1) the TD queue status leading up to the CICS abend and (2) the TD queue status after the emergency restart. In each of these situations, the TD items are shown with their respective read and write pointers as descibed in the text.

Making intrapartition TD physically recoverable can be useful in the case of some CICS queues. For example, after a CICS failure, you might choose to restart CICS as quickly as possible, and then look for the cause of the failure. By specifying queues such as CSMT as intrapartition and physically recoverable, the messages produced just before the failure can be recovered and are therefore available to help you diagnose the problem.

No recovery

Recovery is not performed if you specify NO on the recovery attribute of an intrapartition transient data definition.

Forward recovery

CICS does not provide forward recovery support for transient data. If you want forward recovery of intrapartition transient data, provide application programs to record the changes made to the contents of your intrapartition transient data queues while CICS is running. Changes are recorded in a user journal. The information journaled must include:

You must provide the application program to rebuild the data by reading the journaled information and applying that information to the transient data queue. Your application program could run in the program list table (PLT) phase or after emergency restart. Until the data set is fully recovered, do not write to the queue, because that would probably result in wrongly-ordered data, and a read might not provide valid data (or any data at all). For these reasons, running the recovery program in the PLT phase is probably preferable to running it after the restart.

If you do not have such a recovery strategy and you perform a cold start with a corrupted intrapartition data set, you will lose the contents of the intrapartition data set. You also lose the contents of the intrapartition data set if you specify TDINTRA=EMPTY as a system initialization parameter.

[[ Contents Previous Page | Next Page Index ]]