Hierarchical database systems require few resources, operate at high speed, and allow accurate estimation of the response time, and thus, they are suitably used for applications requiring high reliability and availability, fast processing speed, and large capacity. The hierarchical database system (for example, IBM® IMS™ DL/I) is configured to manage data elements in the form of a tree structure. In the hierarchical database, a minimum data unit is called a segment occurrence (hereinafter, simply referred to as a “segment”), and the segment located at the top of the tree structure is called a root segment. The root segment has one or more dependent segments, and the dependent segment may also have one or more dependent segments. Such a set of segments in the form of a tree with the root segment at the top constitutes the hierarchical database.
The hierarchical databases may be classified primarily into two types, a sequential access type and a direct access type, in accordance with the technique used to maintain the tree structure of the segments in the database. In the sequential access type hierarchical database, the tree structure of the segments is maintained by storing the segments in physically neighboring storage locations. On the other hand, in the direct access type hierarchical database, pointers provided in the respective segments point to other segments to thereby maintain the tree structure of the segments in the database.
In the direct access type hierarchical database, the segments each include a prefix portion in which a pointer pointing to another segment related to that segment is stored, and a data portion in which at least one data element constituting data to be processed by an application program or the like is stored. More specifically, for the pointer in the prefix portion, a relative byte address (RBA) value indicating a retention address of the related segment is used. To access a certain segment, the pointers may be followed sequentially from the root segment.
The hierarchical database includes a large number of pointers as described above, and it is indispensable to maintain the consistency among the pointers. However, an inconsistency may occur among the pointers due to an operation mistake in the database, defects in software or hardware, and others. Taking this into consideration, in the hierarchical database, a pointer checker program is executed periodically so as to verify the consistency of the pointers.
One example of such a pointer checker program is IBM® IMST™ High Performance Pointer Checker. This pointer checker program executes a process of verifying the consistency of the pointers, independently of the database management system (hereinafter, referred to as “DBMS”) (see “User's Guide” referenced below). To execute the process of verifying the consistency of the pointers, the pointers within the database are not read by tracing the chain. Rather, the data on a disk is read and scanned sequentially from the beginning, to extract the retention addresses of all the segments and also extract the pointer values which point to the segments. These two types of values are then compared to detect any inconsistency of the pointer values.