Write-ahead data set
IMS uses the write-ahead data set (WADS) only in the online environment. The WADS contains a copy of committed log records that are in OLDS buffers, but that have not yet been written to the OLDS.
In order to maximize log efficiency, IMS uses a log write-ahead function to write partially filled blocks to the WADS (rather than the OLDS). IMS continually reuses WADS space after writing the appropriate log data to the OLDS.
The log write-ahead function ensures that all log records are on the log before IMS writes changes to a database. IMS updates a database in any of the following situations:
- When IMS needs to reuse the database buffer (if this is before commit)
- During commit
- During VSAM background write
If IMS fails, use the log data in the WADS to complete the content of the OLDS and then close the OLDS as part of an IMS emergency restart or as an option of the Log Recovery utility. If you close the OLDS during emergency restart, you must include the WADS in use at the time of the failure.
You must preallocate and format the WADS on a DASD device that supports extended count key data (ECKD) architecture. Format a WADS using the FORMAT WADS | ALL keywords on either the /NRESTART or /ERESTART commands. All WADSs must be on the same device type and should have the same space allocation. You can also dynamically allocate additional WADSs using the /START WADS command.
The WADS must be defined as a VSAM linear data set with a control interval (CI) size of 4 KB (4096-bytes), secondary space allocation of 0, and the SHAREOPTIONS(3 3) parameter.
- Use the WADS= keyword in the ZHYPERWRITE= parameter in the LOGGER section of the DFSDFxxx PROCLIB member to enable or disable zHyperWrite. You must restart IMS to make the change effective. Changes introduced by using this keyword will persist across a restart. For more information, see LOGGER section of the DFSDFxxx member.
- Issue the UPDATE IMS SET(LCLPARM(ZHYPERWRITE(WADS())) command. You don't need to restart IMS to make the changes effective. However, changes introduced by issuing this command will not persist across a restart. For more information, see UPDATE IMS command.
You can change any of the following specifications for the WADS during an IMS restart:
- Number of WADS
- Sequence of WADS
- WADS names
- Use of single or dual WADS
If you place the WADS on the same device as one of your OLDS and use full-track blocking for the OLDS (in which a block is equal to a full track), the device should be able to handle infrequent OLDS seeks. Contention can still occur.
If the WADS and OLDS are on the same device, the Log Archive utility (DFSUARC0) or dynamic backout can cause severe contention between an OLDS being archived and an active WADS.