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 9: Check for Db2 defined and user-defined RI violations in a table space set


In this example, CHECK PLUS checks for both Db2-defined and user-defined RI rules and writes one SQL DELETE statement per distinct foreign key violation to a discard data set in SPUFI format. CHECK PLUS checks both parent and dependent tables in the relational set and checks all rows in the table space set. The job uses the default values of level 1 processing for table space page and index page checking.

During CHECK DATA processing, the utility reports 10 violations in message BMC52288I and details the errors in messages BMC52610I and BMC52611W. Because of these errors, the utility 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 SQL DELETE statements in the SPUFI-formatted discard data set can be executed to delete the rows that are in violation. You can use SPUFI, QMF, DSNTEP2, DSNTIAD, or the SQL batch execution program that CHECK PLUS provides. For detailed information about this program and an example execution, see SQL-batch-execution-program.

Command options for example 9

Command options used in JCL

Description

TABLESPACESET

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

SCOPE ALL

Checks all rows of all specified tables.

RULES FOR TABLE

Allows you to define RI and column condition rules for CHECK PLUS to verify for the specified table.

FOREIGN KEY

Specifies a foreign key and the table that it references by using the referential constraint syntax of the CREATE TABLE SQL statement.

SAVERULES

Allows you to save or not save the RI rules that you defined in the primary key and referential constraint specifications.

DISCARDFMT SPUFI

Produces one SQL DELETE statement per distinct foreign key in violation and writes the DELETE statements to the discard file.


DDL used to create the data structures checked in example 9

CREATE TABLESPACE ACKRITS6 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.ACKRITB6
 (COL01_CHAR_2 CHAR(2) NOT NULL WITH DEFAULT
 .COL02_CHAR_2 CHAR(2) NOT NULL WITH DEFAULT
 )
IN ACKRIDB1.ACKRITS6
CCSID    EBCDIC;
COMMIT;


JCL for example 9

//           JOB
//CHECK09    EXEC PGM=ACKUMAIN,
//           PARM=(DECA,ACKEX09,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.ACKRITS6
             SCOPE ALL
             RULES
                   FOR TABLE ACK.ACKRITB6

FOREIGN KEY EX9T2FK1(COL01_CHAR_2
                                       .COL02_CHAR_2
                                       )
                   REFERENCES ACK.ACKRITB5
                   SAVERULES NO
         DISCARDFMT SPUFI
/*
//SYSPRINT   DD DSN=ACK.EXAMP09.SYSPRINT,
//           UNIT=SYSDA,SPACE=(CYL,(1,1)),DISP=(NEW,CATLG)
//UTPRINT   DD SYSOUT=*
//SYSDISC   DD DSN=ACK.EXAMPLE9.SYSDISC,
//             DISP=(MOD,CATLG,CATLG),
//             UNIT=WORK,SPACE=(CYL,(1,1))
//SYSERR    DD DSN=ACK.EXAMPLE9.SYSERR,
//             DISP=(MOD,CATLG,CATLG),
//             UNIT=WORK,SPACE=(CYL,(1,1))


SYSPRINT for example 9

                  ***** 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:43:17 ...
BMC50002I UTILITY ID = 'ACKEX09'. 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=8844K,ABOVE 16M=1407040K,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'
BMC50471I BMC_BMCFKEY       ='BMCUTIL.CMN_FKEY'
BMC50471I BMC_BMCPKEY       ='BMCUTIL.CMN_PKEY'
BMC50471I BMC_BMCKEYS       ='BMCUTIL.CMN_KEYS'

BMC50102I CHECK DATA TABLESPACESET ACKRIDB1.ACKRITS6
BMC50102I            SCOPE ALL
BMC50102I            RULES
BMC50102I                  FOR TABLE ACK.ACKRITB6
BMC50102I                      FOREIGN KEY EX9T2FK1(COL01_CHAR_2
BMC50102I                                          .COL02_CHAR_2
BMC50102I                                          )
BMC50102I                      REFERENCES ACK.ACKRITB5
BMC50102I                      SAVERULES NO
BMC50102I                      DISCARDFMT SPUFI

BMC52691I TABLESPACE SET REPORT

BMC52692I  TABLESPACE          TABLE DEPENDENT        TABLE CONSTRAINT
BMC52694I                      CREATOR NAME           CREATOR NAME

BMC52693I ACKRIDB1.ACKRITS6 ACK ACKRITB6

BMC52693I ACKRIDB1.ACKRITS5    ACK   ACKRITB5         ACK    ACKRITB6       EX9T2FK1
BMC52693I                      ACK   ACKRITB5         ACK
ACKRITB4       EX8T2FK1


BMC52693I ACKRIDB1.ACKRITS4    ACK   ACKRITB4

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

BMC50394I UNABLE TO LOCATE SORT WORK DATASETS, DDNAME = 'SORTWKNN'
BMC50474I It 16M = 8360K, ABOVE 16M = 1400076K, CPUS = 3

BMC52601I STARTING CHECK DATA FOR THE FOLLOWING :
BMC52602I  PK FOR TABLE ACK.ACKRITB5 USING IX.ACK.ACKRIX05
BMC52603I  FK ACK.ACKRITB6.EX9T2FK1 USING TS.ACKRIDB1.ACKRITS6
BMC52603I  FK ACK.ACKRITB4.EX8T2FK1 USING TS.ACKRIDB1.ACKRITS4
BMC52230I MAX TASKS = 1, MAX PARTS/TASK = 3, SORTWKS/TASK = 32, MAX OPEN PARTS/TASK = 3, MAX INDEXES/TASK = 2

BMC50894I PAGE EXTERNALIZATION PROCESS STARTING AT 2/10/2011 10:43:19

BMC50650I ESTABLISHING A POINT OF CONSISTENCY FOR:
BMC50651I SPACE ACKRIDB1.ACKRITS4 PART(0)
BMC50651I SPACE ACKRIDB1.ACKRITS6 PART(0)
BMC50651I SPACE ACKRIDB1.ACKRIX05 PART(0)

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

BMC52286I 1: CHECKING OF DATASET 'DEDRCAT.DSNDBD.ACKRIDB1.ACKRITS4.I0001.A001' READ 2 PAGES
BMC52286I 1: CHECKING OF DATASET 'DEDRCAT.DSNDBD.ACKRIDB1.ACKRIX05.I0001.A001' READ 5 PAGES
BMC52286I 1: CHECKING OF DATASET 'DEDRCAT.DSNDBD.ACKRIDB1.ACKRITS6.I0001.A001' READ 2 PAGES
BMC50481I 1: SORT COMPLETE. ELAPSED TIME = 00:00:00
BMC50481I 1: CHECK TASK COMPLETE. ELAPSED TIME = 00:00:00

BMC52606I FK ACK.ACKRITB6.EX9T2FK1 , 100 KEYS CHECKED, 5 VIOLATIONS FOUND
BMC52606I FK ACK.ACKRITB4.EX8T2FK1 , 100 KEYS CHECKED, 5 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:00

BMC52610I CREATOR.TABLE.CONSTRAINT ROW-ID KEY
BMC52611W ACK.ACKRITB6.EX9T2FK1 0000020100 '05','HK'
BMC52611W ACK.ACKRITB6.EX9T2FK1 0000020200 '05','OM'
BMC52611W ACK.ACKRITB6.EX9T2FK1 0000020300 '05','UB'
BMC52611W ACK.ACKRITB6.EX9T2FK1 0000020400 '05','WX'
BMC52611W ACK.ACKRITB6.EX9T2FK1 0000020900 '13','GI'
BMC52611W ACK.ACKRITB4.EX8T2FK1 0000020100 '05','HK'
BMC52611W ACK.ACKRITB4.EX8T2FK1 0000020200 '05','OM'
BMC52611W ACK.ACKRITB4.EX8T2FK1 0000020300 '05','UB'
BMC52611W ACK.ACKRITB4.EX8T2FK1 0000020400 '05','WX'
BMC52611W ACK.ACKRITB4.EX8T2FK1 0000020900 '13','GI'

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

Discard data set for example 9

DELETE FROM ACK.ACKRITB6 WHERE COL01_CHAR_2 = '05' AND COL02_CHAR_2 = 'HK' ;
DELETE FROM ACK.ACKRITB6 WHERE COL01_CHAR_2 = '05' AND COL02_CHAR_2 = 'OM' ;
DELETE FROM ACK.ACKRITB6 WHERE COL01_CHAR_2 = '05' AND COL02_CHAR_2 = 'UB' ;
DELETE FROM ACK.ACKRITB6 WHERE COL01_CHAR_2 = '05' AND COL02_CHAR_2 = 'WX' ;
DELETE FROM ACK.ACKRITB6 WHERE COL01_CHAR_2 = '13' AND COL02_CHAR_2 = 'GI' ;
DELETE FROM ACK.ACKRITB4 WHERE COL01_CHAR_2 = '05' AND COL02_CHAR_2 = 'HK' ;
DELETE FROM ACK.ACKRITB4 WHERE COL01_CHAR_2 = '05' AND COL02_CHAR_2 = 'OM' ;
DELETE FROM ACK.ACKRITB4 WHERE COL01_CHAR_2 = '05' AND COL02_CHAR_2 = 'UB' ;
DELETE FROM ACK.ACKRITB4 WHERE COL01_CHAR_2 = '05' AND COL02_CHAR_2 = 'WX' ;
DELETE FROM ACK.ACKRITB4 WHERE COL01_CHAR_2 = '13' AND COL02_CHAR_2 = 'GI' ;

 

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