DB2 - Problem description
Problem IC88308 | Status: Closed |
IN SMP ENVIROMENTS, APPLICATIONS THAT DO POSITIONED UPDATE/DELETE COULD ENCOUNTER SQL0902N | |
product: | |
DB2 FOR LUW / DB2FORLUW / A10 - DB2 | |
Problem description: | |
The error - "SQLD_BADH "BAD TABLE HANDLE" DIA8521C An incorrect table handle was encountered." is returned along with a SQL0902N error due to a rare timing hole when the following conditions are met: 1) Instance has INTRA_PARALLEL SET to YES and database has DFT_DEGREE > 1 2) Application is using a DELETE WHERE CURRENT of <Cursor_name> or UPDATE WHERE CURRENT of <Cursor_name> clause and the cursor, more likely, has more than 1 table involved. For example, the statement has a join on 2 tables: DECLARE <Cursor_name> CURSOR FOR <statement with join> Possible functions returning SQLD_BADH : sqlriridc, sqldRowDelete. <Stacktrace Snippet> . . . 0x0900000009033F38 sqlriridc__FP8sqlrr_cb + 0x200 0x0900000008E6DB84 sqlriSectInvoke__FP8sqlrr_cbP12sqlri_opparm + 0x28 0x0900000008E733E4 sqlrr_process_execute_request__FP8sqlrr_cbi + 0x5AC 0x0900000008E312B4 sqlrr_execute__FP14db2UCinterfaceP9UCstpInfo + 0x1AC 0x0900000005F8D28C executeSection__10pvmPackageFP5sqlcaUib + 0x7EC 0x090000000696AD60 executeQuery__3PVMFUib + 0x1A4 0x0900000006969A60 run__3PVMFv + 0x454 0x0900000006967298 pvm_entry + 0x460 0x0900000008DF1B5C sqloInvokeFnArgs + 0xCC | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * ALL * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 UDB version 9.7 Fixpack 7 * **************************************************************** | |
Local Fix: | |
Recompiling the stored procedure with no SMP or SMP Degree =1 will prevent the crash. 1) Recompile stored procedure with NO SMP: - Change instance to INTRA_PARALLEL NO; - Restart instance; - Drop procedure DB2INST1.DELETE_AUDIT_TAB@ - CREATE PROCEDURE SHAPP1.DELETE_AUDIT_TAB()... <-- this will create non-SMP section - Change instance back to INTRA_PARALLEL YES - Restart instance; or 2) Do the same thing but with DFT_DEGREE=1 for db cfg, so there's only 1 subagent generating rows | |
available fix packs: | |
DB2 Version 10.1 Fix Pack 2 for Linux, UNIX, and Windows | |
Solution | |
First fixed in DB2 UDB version 9.7 Fixpack 7 | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 17.11.2012 17.01.2013 17.01.2013 |
Problem solved at the following versions (IBM BugInfos) | |
9.7.FP7 | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.1.0.2 | |
10.5.0.2 |