Using MUPIP INTEG

MUPIP INTEG verifies the integrity of GDS database files. INTEG reports errors as it finds them. At the end of the error report there is summary information, including the total number of errors. After the error report, INTEG provides statistics on the index and data portions of the database. The examples in this section illustrate different types of INTEG reports. For additional information about INTEG error reports, refer to the GT.M Message and Recovery Procedures Reference Manual.

INTEG requires exclusive access to the database file when used with the /REGION qualifier.

Example:

        MUPIP> integ simple.dat
        No errors detected by integ.
        Type    Blocks  Records     %Used    Adjacent
        Directory   2       11      6.835          NA
        Index      10       10      1.367           1
        Data       10       10      2.109           2
        Free       78       NA         NA          NA
        Total     100       31         NA           3
       

INTEG /REGION uses a Global Directory and takes region-name(s) as its parameter(s). This form of the MUPIP INTEG command permits the use of lists and wildcards to identify multiple databases. It also permits the INTEG to operate without exclusive access to the file(s). While INTEG /REGION does not require exclusive access, it prevents updates for the duration of its processing.

Example:

       MUPIP> integ /region $DEFAULT
       Integ of region $DEFAULT
       No errors detected by integ.

       Type      Blocks      Records     % Used      Adjacent
       Directory   2           11          6.835       NA
       Index      10           10          1.367        1
       Data       10           10          2.109        2
       Free       78           NA            NA        NA
       Total     100           31            NA         3
       

MUPIP INTEG /FAST verifies only the index and map portions of the file. Because these parts are relatively small, but crucial to proper operation, INTEG /FAST provides a quick way to determine if the file can support updates without danger of increasing damage.

Example:


        MUPIP> integ /fast simple.dat
        No errors detected by fast integ.

        Type        Blocks      Records     % Used      Adjacent
        Directory       2           11       6.835          NA
        Index          10           10       1.367           0
        Data           10           NA          NA          NA
        Free           78           NA          NA          NA
        Total         100           NA          NA           0
      

When INTEG discovers a problem, the system displays a descriptive error message and a location (giving a block number). The system displays the offset of the error within the block in the following format:

        Block:Offset Level
        %GTM-E-DBKEYORD,
            2:1E 0 Keys not in order
                 Directory Path: 1:8, 2:1E
        Keys from ^c to the end are suspect.
        %GTM-I-DBTNTOOLG,
            8:0 1 Block transaction number too large
                Directory Path: 1:8, 2:13
                Path: 8:0
        Keys from ^A to the end are suspect.
        %GTM-I-DBTN, Block TN is C
        %GTM-I-DBTNTOOLG,
            7:0 0 Block transaction number too large
                Directory Path: 1:8, 2:13
                Path: 8:8, 7:0
        Keys from ^A to the end are suspect.
        %GTM-I-DBTN, Block TN is 15
        %GTM-I-DBMBTNSIZMX,
            0:0 FF Map block transaction number too large
        %GTM-W-DBLOCMBINC,
            0:0 FF Local bitmap incorrect
       

where bbb is a hexadecimal block number, ooo is a hexadecimal offset within a block, lll is a decimal level (refer to the "Greystone Database Structure" chapter for information on block levels), and kkk is an M global variable name or "the end" as text. The block for errors related to the file header provides no additional information and always appears as zero (0). The offset for errors not related to a record provides no additional information and always appears as zero (0). The sequence of pointers from the root block to any block forms its path.

Example:

       MUPIP> integ /region $DEFAULT
       Integ of region $DEFAULT
       Block:Offset level
                10:7        1        Keys out of order.
                                        Directory Path: 1:7, 2:30
                                    Path: 11:7, 10:7
       Total error count from integ:
       Type    Blocks      Records     % Used      Adjacent
       Directory   2           11       6.835          NA
       Index      10           10       1.367           1
       Data       10           10       2.109           2
       Free       78           NA          NA          NA
       Total     100           31          NA           3
       %GTM-E-INTEGERS, Database integrity errors
       $