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
$