Example 7: CHECK DATA for RI violations in a table space set


In this CHECK DATA example, the job checks for Db2-defined RI in all related tables in the specified table space set. This example processes the same data structures as in example 6, with the addition of third table space, and writes one record per distinct foreign key violation to a discard data set in KEY format.

With the TABLESPACESET option specified in this example, CHECK PLUS checks not only the dependent relations of the named table space but all relations defined for tables in the relational set. The SCOPE ALL option causes all table spaces to be checked, not only those in CHKP status. The SYSPRINT messages list the actual data structures used in the check.

As CHECK PLUS reads pages from the table space for RI checking, it performs no intrapage and interpage checks on those pages. As CHECK PLUS reads pages from indexes for RI checking, it performs index level 1 checking on those pages. No checks are made for an index to data row consistency.

The job reports one table check constraint violation in message BMC52606I, identifies the constraint having the violation in message BMC52476, and details the violation in message BMC52471I. Additional BMC52606I messages report nine RI exceptions in this job. Because of the Db2-defined RI errors, the utility sets CHKP status and completes with return code 4.

Message 50041I indicates the status of zIIP processing. For this example, the ZIIP installation option is ENABLED, but an XBM subsystem was not specified. CHECK PLUS automatically located an available XBM subsystem to provide zIIP processing. The discard data set, produced in KEY format, can be processed by a user-supplied program to delete the rows that are in violation.

Command options for example 7

Command options used in JCL

Description

TABLESPACESET

Checks all referential constraint relationships and table-check constraints in a relational set.

DISCARDFMT KEY

Produces the key for each row with an RI violation, including duplicate violations.

SCOPE ALL

Checks all rows of all specified tables.

CHECKIXLEVEL 1

Performs checks on index header pages, space map pages, and root and leaf pages in the index.

CHECKTSLEVEL 0

Performs no checks on table space pages other than those performed normally when CHECK PLUS reads rows from the specified table space.


DDL to create the additional table space checked in example 7 

CREATE   TABLESPACE ACKEX63 IN ACKRIDB1
CREATE   TABLESPACE ACKRITS3 IN ACKRIDB1
USING    STOGROUP ACKRISG1
PRIQTY        10
SECQTY        10
ERASE         NO
FREEPAGE      0
PCTFREE       0
BUFFERPOOL    BP0
LOCKSIZE      PAGE
CLOSE         YES
CCSID         EBCDIC
SEGSIZE       64;
COMMIT
;
CREATE TABLE ACK.ACKRITB3
(COL01_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL02_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL03_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL04_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL05_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL06_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL07_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL08_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL09_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL10_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL11_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
,COL12_CHAR_2     CHAR(2)            NOT NULL WITH DEFAULT
)
IN ACKRIDB1.ACKRITS3
CCSID    EBCDIC;
COMMIT
;
ALTER TABLE ACK.ACKRITB3
  ADD FOREIGN KEY EX6T1FK2 ( COL01_CHAR_2, COL02_CHAR_2)
  REFERENCES ACK.ACKRITB2;
COMMIT;

JCL for example 7 

//         JOBCARD
//*===================================================================
//*====  CHECK DATA for RI violations in a table space set        ====
//*================================================================*
//*  Use your DB2 subsystem name inplace of "DB2SYS" parm parameter.  *
//*  Use your DB2 product install libraries for STEPLIBS ;            *
//*     PRODUCT.LIBRARIES                                             *
//*     DB2.DSNEXIT                                                   *
//*     DB2.DSNLOAD                                                   *
//*================================================================*
//CHECK07  EXEC PGM=ACKUMAIN,
//         PARM=(DB2SYS,ACKEX07,NEW,,'MSGLEVEL(1)')
//STEPLIB  DD DISP=SHR,DSN=PRODUCT.LIBRARIES
//         DD DISP=SHR,DSN=DB2.DSNEXIT
//         DD DISP=SHR,DSN=DB2.DSNLOAD
//SYSIN     DD  *
CHECK DATA TABLESPACESET ACKRIDB1.ACKRITS3
           DISCARDFMT KEY
           SCOPE ALL
           CHECKIXLEVEL 1
           CHECKTSLEVEL 0
/*
//SYSPRINT  DD DSN=ACK.EXAMPL07.SYSPRINT,
//           UNIT=SYSDA,SPACE=(CYL,(1,1)),DISP=(NEW,CATLG)
//UTPRINT   DD SYSOUT=*
//SYSDISC   DD DSN=ACK.EXAMPL07.SYSDISC,
//             DISP=(NEW,CATLG,CATLG),
//             UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSERR    DD DSN=ACK.EXAMPL07.SYSERR,
//             DISP=(NEW,CATLG,CATLG),
//             UNIT=WORK,SPACE=(CYL,(1,1))
//SORTWK01  DD DSN=ACK.EXAMPL07.SORTWK01,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK02  DD DSN=ACK.EXAMPL07.SORTWK02,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK03  DD DSN=ACK.EXAMPL07.SORTWK03,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK04  DD DSN=ACK.EXAMPL07.SORTWK04,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK05  DD DSN=ACK.EXAMPL07.SORTWK05,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK06  DD DSN=ACK.EXAMPL07.SORTWK06,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK07  DD DSN=ACK.EXAMPL07.SORTWK07,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK08  DD DSN=ACK.EXAMPL07.SORTWK08,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK09  DD DSN=ACK.EXAMPL07.SORTWK09,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK10  DD DSN=ACK.EXAMPL07.SORTWK10,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK11  DD DSN=ACK.EXAMPL07.SORTWK11,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK12  DD DSN=ACK.EXAMPL07.SORTWK12,
//             DISP=(NEW,DELETE,DELETE),
//             UNIT=WORK,SPACE=(CYL,(2,1),RLSE) 

SYSPRINT for example 7 

1                               *****  B M C   C H E C K   P L U S   F O R   D B 2    V13R1.00  *****
                                             (C) COPYRIGHT 1993 - 2022 BMC SOFTWARE, INC.
               CHECK PLUS TECHNOLOGY IS PROTECTED BY ONE OR MORE OF THE FOLLOWING U.S. PATENTS: 5,579,515 AND 6,163,783
-BMC50001I UTILITY EXECUTION STARTING    3/20/2022   23:04:16 ...
 BMC50002I UTILITY ID = 'ACKEX07'.  DB2 SUBSYSTEM ID = 'DEJM'.  OPTION MODULE = 'ACK$OPTS'.
 BMC50471I z/OS 2.4.0,PID=HBB77C0,DFSMS FOR Z/OS=2.4.0,DB2=12.1.510
 BMC50471I REGION=0M,BELOW 16M=8.5M,ABOVE 16M=1,003.9M,IEFUSI=NO,CPUs=7,GPs=5,zIIPs=2
 BMC50471I MEMLIMIT=15.9E,AVAILABLE=15.9E,MEMLIMIT SET BY:REGION=0
 BMC50471I SMFID=DB2B,JOBID=J0248681,JOB=ACKEX07,STEP=CHECK07,CPU=8561-615 (z15)/1.71,76.0G
0
 BMC50471I CHECK PLUS FOR DB2--V13.01.00 BASE
 BMC50471I   NO MAINTENANCE TO REPORT
 BMC50471I DB2 UTILITIES COMMON CODE--V13.01.00 BASE
 BMC50471I   NO MAINTENANCE TO REPORT
 BMC50471I SOLUTION COMMON CODE--V13.01.00 BASE
 BMC50471I   MAINT: BPJ1541  BPJ1713  BPJ2211
 BMC50471I BMCSORT ENGINE--V02.04.01
 BMC50471I   MAINT: BPJ0691  BPJ0718  BPJ0881  BPJ0922  BPJ0996  BPJ1164  BPJ1309  BPJ1386  BPJ1497  BPJ1594  BPJ1724  BPJ1809
 BMC50471I          BPJ1833  BPJ1891  BPJ1905  BPJ2109  BPJ2232  BPJ2297
 BMC50471I BMC STATS API--V13.01.00 BASE
 BMC50471I   NO MAINTENANCE TO REPORT
 BMC50471I EXTENDED BUFFER MANAGER--V06.02.01
 BMC50471I   MAINT: BPE0443  BPE0445  BPE0447  BPE0449  BPE0450  BPE0451  BPE0452  BPE0455  BPE0456  BPE0457  BPE0460  BPE0463
 BMC50471I          BPE0467  BPE0468  BPE0469  BPE0473  BPE0474  BPE0475  BPE0479  BPE0480  BPE0482  BPE0487  BPE0488  BPE0489
 BMC50471I          BPE0493  BPE0497  BPE0498  BPE0501  BPE0503  BPE0507  BPE0512  BPE0513  BPE0517  BPE0518  BPE0519  BPE0523
 BMC50471I          BPE0524  BPE0527  BPE0528  BPE0530  BPE0531  BPE0534  BPE0535  BPE0540  BPE0541  BPE0542  BPE0545  BPE0549
 BMC50471I          BPE0551  BPE0552  BPE0555  BPE0556  BPE0557  BPE0560
0
 BMC50471I DRNDELAY=3                              LOADDECP=NO                             SQLDELAY=3
 BMC50471I DRNRETRY=10                             LOCKROW=YES                             SQLRETRY=100
 BMC50471I DRNWAIT=NONE                            MAXP=5                                  UXSTATE=SUP
 BMC50471I DSER=NO                                 MSGLEVEL=1                              WBUFFS=20
 BMC50471I DSPLOCKS=NONE                           OPNDB2ID=YES                            WORKUNIT=SYSALLDA
 BMC50471I FILECHK=WARN                            PLAN=ACK1310T                           XBLKS=3
 BMC50471I FORCE_AT=(START,3)                      SMAX=16                                 ZIIP=ENABLED
 BMC50471I FORCE_RPT=NO                            SMCORE=(0K,0K)
 BMC50471I FORCE=NONE                              SORTNUM=32
0

 BMC50471I DB2 DSNHDECP MODULE SETTINGS:
 BMC50471I VERSION                 = 1210
 BMC50471I SUBSYSTEM DEFAULT       = DEJM
 BMC50471I CHARACTER SET           = ALPHANUM
 BMC50471I DATE FORMAT             = USA
 BMC50471I TIME FORMAT             = USA
 BMC50471I LOCAL DATE LENGTH       = 0
 BMC50471I LOCAL TIME LENGTH       = 0
 BMC50471I DECIMAL POINT           = PERIOD
 BMC50471I DECIMAL ARITHMETIC      = 15
 BMC50471I DELIMITER               = DEFAULT
 BMC50471I SQL DELIMITER           = DEFAULT
 BMC50471I ENCODING SCHEME         = EBCDIC
 BMC50471I APPL. ENCODING SCHEME   = EBCDIC
 BMC50471I MIXED                   = NO
 BMC50471I EBCDIC CCSID            = (37,65534,65534)
 BMC50471I ASCII CCSID             = (819,65534,65534)
 BMC50471I UNICODE CCSID           = (367,1208,1200)
 BMC50471I IMPLICIT TIME ZONE      = CURRENT (-05:00)


 BMC50658I DB2 CURRENT FUNCTION LEVEL IS V12R1M509
 BMC50659I DB2 CATALOG LEVEL IS V12R1M509
 BMC50660I DB2 HIGHEST ACTIVATED FUNCTION LEVEL IS V12R1M509
 BMC50661I DB2 CODE LEVEL IS V12R1M510

 BMC50471I BMC_BMCUTIL       ='BMCUTIL.CMN_BMCUTIL'
 BMC50471I BMC_BMCSYNC       ='BMCUTIL.CMN_BMCSYNC'
 BMC50471I BMC_BMCHIST       ='BMCUTIL.CMN_BMCHIST'
 BMC50471I BMC_BMCRELS       ='ACKIB2.BMCRELS'
 BMC50471I BMC_BMCFKEY       ='ACKIB2.BMCFKEY'
 BMC50471I BMC_BMCPKEY       ='ACKIB2.BMCPKEY'
 BMC50471I BMC_BMCKEYS       ='ACKIB2.BMCKEYS'
0
0
 BMC50102I CHECK DATA TABLESPACESET ACKRIDB1.ACKRITS3
 BMC50102I            DISCARDFMT KEY
 BMC50102I            SCOPE ALL
 BMC50102I            CHECKIXLEVEL 1
 BMC50102I            CHECKTSLEVEL 0

 BMC52691I TABLESPACE SET REPORT

 BMC52692I  TABLESPACE         TABLE                        DEPENDENT TABLE              CONSTRAINT
 BMC52694I                     CREATOR  NAME                CREATOR  NAME

 BMC52693I  ACKRIDB1.ACKRITS3  ACK      ACKRITB3

 BMC52693I  ACKRIDB1.ACKRITS2  ACK      ACKRITB2            ACK      ACKRITB3            EX6T1FK2
 BMC52693I                     ACK      ACKRITB2            ACK      ACKRITB1            EX6T1FK1

 BMC52693I  ACKRIDB1.ACKRITS1  ACK      ACKRITB1

 BMC50041I 0: ZIIP  ENABLED (0) USING XBM SUBSYSTEM XBMB
 BMC50004I UTILINIT PHASE COMPLETE.  ELAPSED TIME = 00:00:00

 BMC50474I BELOW 16M = 8304K, ABOVE 16M = 1019316K, CPUS = 5
 BMC50398I CHECK PROCESSING CONSTRAINED BY SORT WORK FILES

 BMC52601I STARTING CHECK DATA FOR THE FOLLOWING :
 BMC52602I  PK  FOR TABLE ACK.ACKRITB2 USING IX.ACK.ACKRIX03
 BMC52603I  FK  ACK.ACKRITB3.EX6T1FK2 USING TS.ACKRIDB1.ACKRITS3
 BMC52603I  TCC ACK.ACKRITB1.ACKRITB1_CHKCNSTR USING TS.ACKRIDB1.ACKRITS1
 BMC52603I  FK  ACK.ACKRITB1.EX6T1FK1 USING TS.ACKRIDB1.ACKRITS1
 BMC52230I MAX TASKS = 1, MAX PARTS/TASK = 14, SORTWKS/TASK =  12, MAX OPEN PARTS/TASK = 14, MAX INDEXES/TASK = 3

 BMC50894I PAGE EXTERNALIZATION PROCESS STARTING AT   3/20/2022  23:04:17

 BMC50650I ESTABLISHING A POINT OF CONSISTENCY FOR:
 BMC50651I SPACE ACKRIDB1.ACKRITS1 PART(0) PSID(0002)
 BMC50651I SPACE ACKRIDB1.ACKRITS3 PART(0) PSID(0010)
 BMC50651I SPACE ACKRIDB1.ACKRIX03 PART(0) PSID(000C)

 BMC50895I PAGE EXTERNALIZATION PROCESS COMPLETE.  ELAPSED TIME =  00:00:00

 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A012' READ 2 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A011' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A010' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A009' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A008' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A007' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A006' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A005' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A004' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A003' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A002' READ 34 PAGES
 BMC52476W TABLE CHECK CONSTRAINT VIOLATION.  TABLE = 'ACK.ACKRITB1', CONSTRAINT = 'ACKRITB1_CHKCNSTR'
 BMC52471I   !COL01_CHAR_2='04'
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS1.I0001.A001' READ 34 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRITS3.I0001.A001' READ 66 PAGES
 BMC52286I 1: CHECKING OF DATASET 'DEJMCAT.DSNDBD.ACKRIDB1.ACKRIX03.I0001.A001' READ 5 PAGES
 BMC50481I 1: SORT COMPLETE.  ELAPSED TIME = 00:00:00
 BMC50481I 1: CHECK TASK COMPLETE.  ELAPSED TIME = 00:00:00

 BMC52606I TCC ACK.ACKRITB1.ACKRITB1_CHKCNSTR , 100 ROWS CHECKED, 1 VIOLATIONS FOUND
 BMC52606I FK  ACK.ACKRITB3.EX6T1FK2 , 100 KEYS CHECKED, 5 VIOLATIONS FOUND
 BMC52606I FK  ACK.ACKRITB1.EX6T1FK1 , 100 KEYS CHECKED, 4 VIOLATIONS FOUND

 BMC50476I DDNAME = SYSERR, I/OS = 2, I/O WAITS = 2, RDB LOCK WAITS = 0
 BMC52288I CHECK ERROR SUMMARY: PAGE EXCEPTIONS-0, CONSTRAINT VIOLATIONS-10
 BMC50004I CHECK PHASE COMPLETE.  ELAPSED TIME = 00:00:01

 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 2
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 3
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 4
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 5
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 6
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 7
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 8
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 9
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 10
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 11
 BMC52630I CHECK PENDING STATUS HAS BEEN RESET (OFF) FOR ACKRIDB1.ACKRITS1 PART 12
 BMC52610I  CREATOR.TABLE.CONSTRAINT ROW-ID   KEY
 BMC52611W  ACK.ACKRITB3.EX6T1FK2   0000004201 '05','HK'
 BMC52611W  ACK.ACKRITB3.EX6T1FK2   0000004202 '05','OM'
 BMC52611W  ACK.ACKRITB3.EX6T1FK2   0000004203 '05','UB'
 BMC52611W  ACK.ACKRITB3.EX6T1FK2   0000004204 '05','WX'
 BMC52611W  ACK.ACKRITB3.EX6T1FK2   0000004209 '13','GI'
 BMC52611W  ACK.ACKRITB1.EX6T1FK1   0000002201 '05','HK'
 BMC52611W  ACK.ACKRITB1.EX6T1FK1   0000002202 '05','OM'
 BMC52611W  ACK.ACKRITB1.EX6T1FK1   0000002203 '05','UB'
 BMC52611W  ACK.ACKRITB1.EX6T1FK1   0000002204 '05','WX'

 BMC50476I DDNAME = SYSERR, I/OS = 1, I/O WAITS = 1, RDB LOCK WAITS = 0
 BMC50476I DDNAME = SYSDISC, I/OS = 1, I/O WAITS = 1, RDB LOCK WAITS = 0
 BMC50004I FIXRI PHASE COMPLETE.  ELAPSED TIME = 00:00:00

 BMC50041I 0: ZIIP NOT ENABLED (0) USING XBM SUBSYSTEM XBMB
0BMC50006I UTILITY EXECUTION COMPLETE, RETURN CODE = 4

Discard data set for example 7

The following figure shows the discard data set to output in KEY format for example 7. Due to space restrictions, padding beyond 30 bytes is indicated with an ellipsis (...).

image2018-12-14_21-5-59.png

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*