Running REPAIR to modify OBID for a compression dictionary

Additional invocations of the REPAIR utility might be necessary if you use Db2 VSAM data sets from the source system to move data that you are merging in the target system and the table space is segmented and compressed.

About this task

If the segmented, compressed table space has a dictionary, the space map page that contains the dictionary has an OBID that is the same as the table space that was modified in the header page when you moved and merged your data. The OBID in the space map must be modified to match the new value in the header page.

Procedure

To modify the OBID in the space map to match the new value in the header page:

  1. Use the DSN1PRNT utility to view the data set header page and space map.
    The following is an example from DSN1PRNT with the FORMAT option. On the header page, or page zero, you will see something similar to the output displayed in the following figure:
    Figure 1. Sample header page of DSN1PRNT command with the FORMAT option.
    PAGE: # 00000000 ----------------------------------------------------------------------------------
    HEADER PAGE:  PGCOMB='10'X  PGLOGRBA='BC8DB9277831'X  PGNUM='00000000'X  PGFLAGS='38'X 
    HPGOBID='018E0002'X  HPGHPREF='000000B4'X  HPGCATRL='00'X  HPGREL='D3'X  HPGZLD='D3'X  
    
    The following figure shows the first space map page, or page 1:
    Figure 2. Sample output from first space map page of DSN1PRNT command with FORMAT option.
    FIRST PART OF SEGMENTED SPACE MAP:   
    SEG 0001   000000020002C0 FFFF
    SEG 0002   00000003000280 FFFF
    SEG 0003   00000004000280 FFFF
    SEG 0004   00000000000280 FFFF
    SEG 0005   000000060003C0 3333
    SEG 0006   00000007000380 3333
    SEG 0007   00000008000380 3333
    SEG 0008   00000009000380 3333
    SEG 0009   0000000A000380 3333
    SEG 000A   0000000B000380 3333
    SEG 000B   0000000C000380 3333
    SEG 000C   0000000D000380 3333
    SEG 000D   0000000E000380 3333
    SEG 000E   00000000000380 3300
    

    In the header page, HPGOBID is the DBID concatenated with the OBID. In the first figure above, HPGOBID is X'018E0002', so the DBID is X'018E' and the OBID is 0002'X. You can see that same OBID in the first four segments in the space map page, or bytes 5 and 6, following the segment number.

    If you run DSN1PRNT on pages 0 and 1, and you do not see the same OBID in the space map page as the one listed on the header page, it means that the dictionary is not yet built. If the dictionary is not built, you only see the table segments (segments X'5' thru X'E' shown above). If this is the case, you do not need to modify the OBID and you can stop this task.

  2. Use the REPAIR utility to modify the OBIDs in the space map to match the new OBID in the header page. Only the segments that match the OBID in the old header page must be modified. The remaining segments are for the table and do not need to be modified.

    In the second figure above, you can see that the first four segments need to be modified and that the table OBID is X'0003'.

    The number of segments that need to be modified is dependent on the SEGSIZE value of the table space. The following table shows the offset of the OBIDs that need to be modified for each SEGSIZE.
    Table 1. The offset of OBIDs that need to be modified in order of SEGSIZE
    SEGSIZE Offset of OBIDs to REPAIR
    4

    X'20'

    X'29'

    X'32'

    X'3B'

    8

    X'20'

    X'2B'

    12

    X'20'

    X'2D'

    16–64

    X'20'