Allocating online log data sets (OLDSs)
Three OLDSs are required for online IMS execution. When allocating space for OLDSs, consider how many data sets your system needs, the track size of the storage device, and whether you intend to use dual logging. You can allocate OLDSs as DFSMS extended-format data sets to improve logging performance.
- The maximum number of OLDSs is 100.
- Because the OLDS can be required for restart, it cannot be a temporary data set.
Define the initial set of OLDSs to be acquired by restart initialization in the OLDSDEF control statement in the LOGGER section of the DFSDFxxx member of IMS.PROCLIB. You can dynamically allocate this set of OLDSs, or specify them through DD statements.
- Single or dual online logs can be specified by using the OLDSDEF control statement in the LOGGER section of the DFSDFxxx member of IMS.PROCLIB.
- The only specific naming requirement for an OLDS is that it be unique.
However, ddnames for the OLDS must be of the form DFSOLPnn for primary OLDS, and DFSOLSnn for secondary OLDS, where nn can be any numeric value.
- An OLDS must be a single volume and extent, and at least three data sets must be allocated. However, if an OLDS is to be stopped and started with /STA and /STO commands, DFSMDA members must exist with IMS.SDFSRESL for each such data set. You must provide DFSMDA members for all OLDSs.
- The minimum number of buffers that you can specify is 2, with a maximum of 9,999. Specify the number of OLDS buffers on the OLDSDEF control statement in the LOGGER section of the DFSDFxxx member of PROCLIB data set. The default number of buffers is 5.
- DASD space for each OLDS must be contiguous, and secondary extents are not permitted. Pairs of OLDSs (primary and secondary) must have the same space allocation.
An OLDS can be defined as a DFSMS extended-format, striped data set. Set the data type of the OLDS data class to EXT to define it as an extended-format data set, and the storage class SDR to a value that results in multiple stripes. In JCL allocation, the data class is specified by the DATACLAS parameter and the storage class is specified by the STORCLAS parameter of the DD statement.
- Use the OLDS= keyword in the ZHYPERWRITE= parameter in the LOGGER section of the DFSDFxxx PROCLIB member. 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(OLDS())) 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 enable an OLDS to use extended address volumes (EAVs) that are available in z/OS®. To enable an OLDS to use EAVs, specify an EAV volume on the VOLSER parameter of the DFSOLPnn DD statement when you allocate the data set. In addition, you can specify the attribute EATTR to indicate whether the data set supports extended attributes.
- Online log data sets do not support compression.
If you use dual logging, allocate at least six data sets with corresponding numeric values, with a maximum of 200 possible. You can dynamically allocate an additional OLDS using the /START OLDS master terminal operator command. If you use dynamic allocation you should preallocate and catalog candidate data sets, and specify data set names using the dynamic allocation macro, DFSMDA. You must provide a DFSMDA member for each OLDS.
OLDS block sizes must be equal. Predefine the OLDS with block size, logical record length (LRECL), and record format specified at definition time. The OLDS LRECL must equal the OLDS block size minus 4 bytes (LRECL=BLKSIZE–4). The OLDS record format must be variable blocked (VB). The OLDS block size must meet the following requirements:
- It must be a minimum of 6 KB and a multiple of 2048. If IMS is running in z/Architecture® mode, log buffer storage is only fixed above 2 GB if the block size is a multiple of 4096.
- It must not exceed a maximum of 30720 bytes, because this is the largest multiple of 2048 supported by BSAM.
- At a minimum, its length must be the same as the length of the largest log record, plus 78 bytes. The largest log record length is a function of the record size for the long message queue data sets, the EMH terminal buffer size, and the additional overhead of each log record.
The main factor that determines OLDS block size is the track size of the OLDS devices. The OLDS block size cannot exceed the OLDS track size.
The WADS temporarily holds partially filled OLDS buffers, which means that only full OLDS buffers are written to the OLDS. Therefore, choose a large OLDS block size to use DASD space more efficiently.
The following table provides some recommended OLDS block sizes (in multiples of 2048) that maximize DASD space utilization for several DASD devices. Table 1 also provides information about blocks per track and bytes of log data per track.
Device type | OLDS block size | Blocks per track | Bytes of log data per track |
---|---|---|---|
3380 | 22,528 | 2 | 45,056 |
3390 | 26,624 | 2 | 53,248 |
3390 | 18,432 | 3 | 55,296 |
9340 | 22,528 | 2 | 45,056 |
The following table provides recommended OLDS block sizes for device types 3380 and 3390 if IMS is running in z/Architecture mode, in which the OLDS block sizes must be multiples of 4096. This table also provides information about blocks per track and bytes of log data per track.
Device type | OLDS block size | Blocks per track | Bytes of log data per track |
---|---|---|---|
3380 | 20,480 | 2 | 40,960 |
3380 | 12,288 | 3 | 36,864 |
3390 | 24,576 | 2 | 49,152 |
3390 | 16,384 | 3 | 49,152 |
Log initialization ensures that the block size specified in the OLDS data set control block (DSCB) data set is large enough to handle the maximum length log record. If the block size is too small, an abend can occur.
To change the OLDS block size, archive all OLDS data, and scratch and reallocate each OLDSs to ensure that all OLDS block sizes remain identical. Also use the DELETE.LOG DBRC command to remove the OLDS from the DBRC RECON data set.