IBM Support

II07611: DB2 R310 MIGRATION STEP 1 & 3: RUN LINK CHECKER ON DB2 R230 ADDITIONAL QUERIES NECESSARY FOR SUCCESSFUL CATALOG MIGRATION.

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as canceled.

Error description

  • 5740xyr00 r310 DB2
    The following information is provided for repair of a broken
    DB2 CATALOG during DB2 V.3 migration.  One failure symptom
    is an RC00E40601 in the CATMAINT step of migration job
    DSNTIJTC.  The cause of this problem was introduced in DB2
    2.1 and the fix for it was documented in DB2 2.1 PTF
    UL47130/PL36601.  DB2 2.2 symptoms are documented in APAR
    PL62497. The only customers who should experience this problem
    are those who have migrated from DB2 2.1 to 2.2 to 2.3.
    Customers who have done new installs from DB2 2.2 and up
    should not experience this problem.
    ************************************************************
       To determine if the problem exists the following selects
    should be run (the first 2 SELECTs are listed in Admin. Guide
    on pg. 2-200). If either of the first 2 SELECTS return a row
    with a count greater than zero, you have a problem.  One row
    will always be returned because a row is returned to indicate
    a successful run.
    
       SELECT #1 will return a count greater than 0, if there
                 is a row(s) in error.
    
          SELECT COUNT(*) FROM SYSIBM.SYSKEYS
            WHERE IXCREATOR = 'SYSIBM' AND IXNAME = 'DSNUCH01'
              AND COLNAME = 'START_RBA' AND ORDERING = 'A';
    
    
       SELECT #2 will return a count greater than 0, if there
                 is a row(s) in error.
    
          SELECT COUNT(*) FROM SYSIBM.SYSINDEXES
            WHERE CREATOR = 'SYSIBM'   AND NAME = 'DSNDCX01'
              AND UNIQUERULE = 'D';
    
       SELECT #3 can return multiple rows.
    
          SELECT COUNT(*) FROM SYSIBM.SYSCOPY WHERE IBMREQD = 'Y';
    
       SELECT #4 will return a single row with count greater than 0,
                 if there is a row in error.
    
          SELECT COUNT(*) FROM SYSIBM.SYSFOREIGNKEYS
            WHERE CREATOR = 'SYSIBM' AND TBNAME = 'SYSDBAUTH'
              AND RELNAME = 'DSNDD#AD' AND COLNO = 1;
    
    The errors that will cause problems for the customer are
    either or both of the first two selects.  The CATMAINT
    utility (migration job DSNTIJTC) will fail and the DB2
    catalog will not be migrated.  You will need to correct the
    V2.3 catalog before re-running DSNTIJTC.
       For the third select, rows returned can eventually be
    deleted via the MODIFY utility.
    For the fourth select, the particular row and column in
    error won't be referenced by DB2 except in migration step 3
    (DSNTESQ query 54) but can be corrected by the user if
    desired using the same repair technique as used for the
    first two SELECTs.
    
       For the first two SELECTs and the last, the user must
    use the REPAIR utility to fix the values in error.  They
    should perform the following steps (note that the Diagnosis
    Guide will prove to be very valuable in this):
    
        1) DSN1PRNT the SYSDBASE tablespace from database DSNDB06
        2) Find the data rows returned by the queries.  In a large
           SYSDBASE, this can take some time, so to make it a bit
           faster,
           here are some suggestions:
    
             SELECT #1:  DSN1PRNT the DSNDXX01 index from
                  database DSNDB06, and find the RID associated
                  with the key for SYSIBM.DSNUCH01.  Using that
                  RID, address into the SYSDBASE tablespace, to
                  get to the SYSINDEXES row for that index.  In
                  that record, the fourth RID represents the
                  link from SYSINDEXES to SYSKEYS.  Follow that
                  to the first SYSKEYS record.  From there, the
                  first RID points to the next SYSKEYS record.
                  Do that one more time to get to the third
                  SYSKEYS record.  Find the offset that
                  represents the ORDERING column (old value is
                  'A', new value will be 'D').  Note the page
                  and the offset for use in the REPAIR.
    
            SELECT #2:  Using the DSN1PRNT of DSNDXX01 (above),
                  find the RID associated with the key for
                  SYSIBM.DSNDCX01.  Using that RID, address into
                  SYSDBASE to get to SYSINDEXES for that index.
                  Find the offset that represents the UNIQUERULE
                  column (old value is 'D', new value will be
                  'U').  Again, note the page and the offset.
    
            SELECT #4:  DSN1PRNT the DSNDLX01 index from
                  database DSNDB06.  Find the RID associated
                  with the key for SYSIBM.SYSDATABASE.  Using
                  that RID, address into SYSDBASE to get to a
                  SYSRELS record (should be for link DSNDD#AD).
                  The fourth RID in that record represents the
                  link to SYSFOREIGNKEYS.  That RID should point
                  to the record that we are interested in
                  (CREATOR, TBNAME, and NAME should be SYSIBM,
                  SYSDBAUTH, and NAME).  Find the offset that
                  represents the COLNO column (old value is
                  x'8001', new value will be x'8003').  Once
                  again, note the page and the offset.
    
        3) When the above is completed (don't worry, you
           don't need to perform all of these steps at
           once...the catalog data will not "move", so there's
           not a concern that the pages and offsets will change),
           back up the SYSDBASE tablespace, just to be safe (use
           COPY, DSN1COPY, or whatever).
    
        4) Code the REPAIR utility, making sure to use the
           VERIFY keyword prior to each REPLACE keyword, to
           insure the correct values.  There should be at most
           three VERIFY/REPLACE pairs, corresponding to the
           pages and offsets within SYSDBASE that were noted in
           step2.  You should have something like:
    
              REPAIR
                 LOCATE TABLESPACE DSNDB06.SYSDBASE PAGE X'pppp'
                        VERIFY OFFSET X'oooo' DATA X'dddddd'
                        REPLACE OFFSET X'oooo' DATA X'dddddd'
                 LOCATE TABLESPACE DSNDB06.SYSDBASE PAGE X'pppp'
                        VERIFY OFFSET X'oooo' DATA X'dddddd'
                        REPLACE OFFSET X'oooo' DATA X'dddddd'
                 LOCATE TABLESPACE DSNDB06.SYSDBASE PAGE X'pppp'
                        VERIFY OFFSET X'oooo' DATA X'dddddd'
                        REPLACE OFFSET X'oooo' DATA X'dddddd'
    
           Execute it.
    
        5) Run the failing queries (from above) again, to
           verify that the REPAIR was successful, and that the
           correct values were REPAIRed.  If not, look back at
           the REPAIR job, and un-do the REPAIR if necessary
           (via another REPAIR).
    ================================================================
    Migration step3 checks for logical consistency in the catalog
    tables. Many of these queries take a long time to run.  The
    queries are optional, however several of them are highly
    recommended to ensure a successful catalog migration. We
    RECOMMEND you run queries 18, 19 and 54 and the following
    modification to 19. These queries will test for the referential
    integrity required to create the new table SYSSTATS.
       This query should be run on all R230 systems before migrating
    to R310. It checks for the logical correctness for referential
    integrity between SYSFIELDS and SYSCOLUMNS. These two tables
    are used in generating new V3 table, SYSSTATS during job
    DSNTIJTC (CATMAINT utility).
    
       SELECT TBCREATOR, TBNAME, NAME
         FROM SYSIBM.SYSFIELDS FL
           WHERE NOT EXISTS
             (SELECT *
                FROM SYSIBM.SYSCOLUMNS CL
                WHERE FL.TBCREATOR = CL.TBCREATOR
               AND FL.TBNAME = CL.TBNAME
               AND FL.NAME = CL.NAME
               AND FL.COLNO = CL.COLNO);
    This query is very similar to query 19 in DSNTESQ. The WHERE
    clause has been modified in this additional query. You should
    expect one row returned with a count of 0 indicating a
    successful run. If more rows are returned, this indicates
    that there are statistic rows in SYSFIELDS for tables or
    columns that do not have rows in SYSCOLUMNS. This is a problem
    which needs to be fixed before running (CATMAINT) DSNTIJTC.
    To correct this problem, check SYSFIELDS and SYSCOLUMNS for
    non-matching column names.  Correct the names in SYSFIELDS.
    To change the incorrect rows in SYSFIELDS you can:
       drop the table (deletes references to the table or
       database in SYSFIELDS) then rebuild table
    Job DSNTIJTC (CATMAINT) verifies SYSFIELDS and SYSCOLUMNS and
    will abend and cause the migration to fail if the V2.3 catalog
    is not correct.
    ================================================================
    

Local fix

Problem summary

Problem conclusion

Temporary fix

Comments

  • CLOSE FOR DB2INFO RETENTION
    

APAR Information

  • APAR number

    II07611

  • Reported component name

    PB LIB INFO ITE

  • Reported component ID

    INFOPBLIB

  • Reported release

    001

  • Status

    CLOSED CAN

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    1994-02-11

  • Closed date

    1997-01-13

  • Last modified date

    1997-01-13

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

Applicable component levels

[{"Business Unit":{"code":null,"label":null},"Product":{"code":"SG19O","label":"APARs - MVS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"001","Edition":"","Line of Business":{"code":"","label":""}},{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEPEK","label":"Db2 for z\/OS"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"001","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
14 December 2020