Limited supportBMC provides limited support for this version of the product. As a result, BMC no longer accepts comments in this space. If you encounter problems with the product version or the space, contact BMC Support.BMC recommends upgrading to the latest version of the product. To see documentation for that version, see CHECK PLUS for DB2 13.1.

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 a 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 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 

//             JOB
//CHECK07      EXEC PGM=ACKUMAIN,
//             PARM=(DECA,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.EXAMP07.SYSPRINT,
//              UNIT=SYSDA,SPACE=(CYL,(1,1)),DISP=(NEW,CATLG)
//UTPRINT      DD SYSOUT=*
//SYSDISC      DD DSN=ACK.EXAMPLE7.SYSDISC,
//                DISP=(MOD,CATLG,CATLG),
//                UNIT=WORK,SPACE=(CYL,(1,1))
//SYSERR       DD DSN=ACK.EXAMPLE7.SYSERR,
//                DISP=(MOD,CATLG,CATLG),
//                UNIT=WORK,SPACE=(CYL,(1,1))
//SORTWK01     DD DSN=ACK.EXAMPLE7.SORTWK01,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK02     DD DSN=ACK.EXAMPLE7.SORTWK02,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK03     DD DSN=ACK.EXAMPLE7.SORTWK03,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK04     DD DSN=ACK.EXAMPLE7.SORTWK04,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK05     DD DSN=ACK.EXAMPLE7.SORTWK05,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK06     DD DSN=ACK.EXAMPLE7.SORTWK06,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK07     DD DSN=ACK.EXAMPLE7.SORTWK07,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK08     DD DSN=ACK.EXAMPLE7.SORTWK08,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK09     DD DSN=ACK.EXAMPLE7.SORTWK09,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK10     DD DSN=ACK.EXAMPLE7.SORTWK10,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK11     DD DSN=ACK.EXAMPLE7.SORTWK11,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK12     DD DSN=ACK.EXAMPLE7.SORTWK12,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK09     DD DSN=ACK.EXAMPLE7.SORTWK09,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK10     DD DSN=ACK.EXAMPLE7.SORTWK10,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK11     DD DSN=ACK.EXAMPLE7.SORTWK11,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)
//SORTWK12     DD DSN=ACK.EXAMPLE7.SORTWK12,
//                DISP=(NEW,DELETE,DELETE),
//                UNIT=WORK,SPACE=(CYL,(2,1),RLSE)

SYSPRINT for example 7 

                 ***** B M C  C H E C K  P L U S  F O R  D B 2  V10R1.00  *****
                             (C) COPYRIGHT 1993 - 2011 BMC SOFTWARE, INC.
         CHECK PLUS TECHNOLOGY IS PROTECTED BY ONE OR MORE OF THE FOLLOWING U.S. PATENTS: 5,579,515; 6,163,783; AND 5,860,069
BMC50001I  UTILITY EXECUTION STARTING 2/10/2011 10:54:36 ...
BMC50002I  UTILITY ID = 'ACKEX07'. DB2 SUBSYSTEM ID = 'DEDR'. OPTION MODULE = 'ACK$OPTS'.
BMC50471I  z/OS 1.10.0,PID=HBB7750,DFSMS FOR Z/OS=1.10.0,DB2=9.1.0
BMC50471I  REGION=0M,It 16M=8820K,ABOVE 16M=1409576K,IEFUSI=NO,CPUS=3
BMC50471I   MEMLIMIT=17592186040320M,AVAILABLE=17592186040320M,MEMLIMIT SET BY:REGION=0

BMC50471I  CHECK PLUS FOR DB2--V10.01.00
BMC50471I   NO MAINTENANCE TO REPORT
BMC50471I  DB2 UTILITIES COMMON CODE--V10.01.00
BMC50471I   NO MAINTENANCE TO REPORT
BMC50471I  SOLUTION COMMON CODE--V10.01.00
BMC50471I   NO MAINTENANCE TO REPORT
BMC50471I  BMCSORT ENGINE--V02.03.01
BMC50471I   NO MAINTENANCE TO REPORT
BMC50471I  BMC STATS API--V10.01.00
BMC50471I   NO MAINTENANCE TO REPORT

BMC50471I  ACFORTSS=YES             LOCKROW=YES                 SQLDELAY=3
BMC50471I  DRNDELAY=3               MAXP=5                      SQLRETRY=100
BMC50471I  DRNRETRY=10              MSGLEVEL=1                  UXSTATE=SUP
BMC50471I  DRNWAIT=NONE             OPNDB2ID=YES                WBUFFS=20
BMC50471I  DSER=NO                  PLAN=ACKQA                  WORKUNIT=SYSALLDA
BMC50471I  DSPLOCKS=NONE            SMAX=16                     XBLKS=3
BMC50471I  FILECHK=WARN             SMCORE=(0K,0K)              ZIIP=ENABLED
BMC50471I LOADDECP=NO               SORTNUM=32

BMC50471I DB2 DSNHDECP MODULE SETTINGS:
BMC50471I VERSION                   = 910
BMC50471I SUBSYSTEM DEFAULT         = DEDR
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)

BMC50028I DB2 MODE = NFM
BMC50471I BMC_BMCUTIL      ='BMCUTIL.CMN_BMCUTIL'
BMC50471I BMC_BMCSYNC      ='BMCUTIL.CMN_BMCSYNC'
BMC50471I BMC_BMCHIST      ='BMCUTIL.CMN_BMCHIST'
BMC50471I BMC_BMCRELS      ='BMCUTIL.CMN_RELS'


BMC52611W  ACK.ACKRITB3.EX6T1FK2 0000020300 '05','UB'
BMC52611W  ACK.ACKRITB3.EX6T1FK2 0000020400 '05','WX'
BMC52611W  ACK.ACKRITB3.EX6T1FK2 0000020900 '13','GI'
BMC52611W  ACK.ACKRITB1.EX6T1FK1 0000020100 '05','HK'
BMC52611W  ACK.ACKRITB1.EX6T1FK1 0000020200 '05','OM'
BMC52611W  ACK.ACKRITB1.EX6T1FK1 0000020300 '05','UB'
BMC52611W  ACK.ACKRITB1.EX6T1FK1 0000020400 '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 XBMA
BMC50006I UTILITY EXECUTION COMPLETE, RETURN CODE = 4
BMC50471I BMC_BMCFKEY      ='BMCUTIL.CMN_FKEY'
BMC50471I BMC_BMCPKEY      ='BMCUTIL.CMN_PKEY'
BMC50471I BMC_BMCKEYS      ='BMCUTIL.CMN_KEYS'

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 XBMA
BMC50004I UTILINIT PHASE COMPLETE. ELAPSED TIME = 00:00:02

BMC50474I It 16M = 8328K, ABOVE 16M = 1402268K, CPUS = 3
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 2/10/2011 10:54:40

BMC50650I ESTABLISHING A POINT OF CONSISTENCY FOR:
BMC50651I SPACE ACKRIDB1.ACKRITS3 PART(0)
BMC50651I SPACE ACKRIDB1.ACKRITS1 PART(0)
BMC50651I SPACE ACKRIDB1.ACKRIX03 PART(0)

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

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

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:03

BMC52630I CHECK PENDING STATUS HAS BEEN SET (ON) FOR ACKRIDB1.ACKRITS1 PART 1
BMC52610I  CREATOR.TABLE.CONSTRAINT ROW-ID KEY
BMC52611W  ACK.ACKRITB3.EX6T1FK2 0000020100 '05','HK'
BMC52611W  ACK.ACKRITB3.EX6T1FK2 0000020200 '05','OM'

Discard data set for example 7

The following figure shows the discard data set 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*