Defining a HALDB indirect list data set
An IMS High Availability Large Database (HALDB) uses indirect pointers rather than direct pointers during reorganization processing. A VSAM KSDS (key sequenced data set) called the indirect list data set (ILDS) stores the indirect pointers. Use the z/OS® DEFINE CLUSTER command to define the ILDS.
The use of logical relationships or secondary indexing presents challenges in High Availability Large Database (HALDB) reorganization processing. After a HALDB partition is reorganized, the change in segment locations in the reorganized partition potentially invalidates all the pointers to those segments, whether the pointers are from other database records within the same HALDB partition, other HALDB partitions, or HALDB secondary indexes. In order to eliminate the need to update pointers throughout other database records when a single HALDB partition is reorganized, HALDB introduces the use of indirect pointers.
After a reorganization, direct pointers that have become invalid are updated by using the indirect pointers upon the first reference to the segments that have moved. A new system index data set, which serves as a repository for indirect pointers, is introduced for HALDB. This system index data set is called the Indirect List Data Set (ILDS).
The ILDS is a VSAM KSDS with a 9-byte key. There is one ILDS per partition in a PHDAM, or PHIDAM database. During a reorganization reload or migration reload of segments involved in inter-record pointing, an entry called Indirect List Entry (ILE) is created in the ILDS for each of these segments that is reloaded. Each ILE is 50 bytes in length and contains pointers and control information. The following is a sample of IDCAMS input that is used for defining an ILDS.
DEFINE CLUSTER ( -
NAME (FFDBPRT1.XABCD010.L00001) -
TRK (2,1) -
VOL (IMSQAV) -
FREESPACE (80,10) -
KEYS (9,0) -
RECSZ (50,50) -
REUSE -
SHAREOPTIONS (3,3) -
SPEED ) -
DATA ( -
CISZ (8192) ) -
INDEX ( -
CISZ (2048) )
- NAME
- Defines the HALDB Partition Base Name (FFDBPRT1.XABCD010), ILDS reference (.L), and HALDB Partition ID (00001).
- KEYS
- A required parameter value. Specifies a key size of 9 bytes at offset 0 into the LRECL.
- RECSZ
- A required parameter value. Specifies a record size of 50 bytes, the length of an ILE. REUSE must be specified for all HALDB VSAM data sets.
- FREESPACE
- Provides for free space on initial loads and after CI and CA splits.
To compute the size of an ILDS, multiply the size of an ILE with the total number of physically paired logical children, logical parents of unidirectional relationships, and secondary index target segments.