DB2 - Problem description
Problem IC73627 | Status: Closed |
BREAKING CLP OUTPUT PIPE ON STORED PROC CAUSES DB2BP TO RUN AWAY, FLOODING DB2DIAG.LOG WITH ERRORS | |
product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
Problem description: | |
1. create stored proc with large result set in returned cursor: CREATE OR REPLACE PROCEDURE foo DYNAMIC RESULT SETS 1 LANGUAGE SQL BEGIN DECLARE stmt_str varchar(16384); DECLARE output_cursor cursor with return to caller for output_Stmt; set stmt_str = 'select 1 from syscat.tables,syscat.tables,syscat.tables'; prepare output_Stmt from stmt_str; open output_cursor; END @ 2. db2 "call foo" | less 3. page down a couple of pages, and then quit out of 'less'. This breaks the output pipe of CLP frontend 4. db2bp will start to spin, consuming a whole CPU and flooding db2diag.log with messages 2010-10-11-13.10.12.544776-240 E13460809A708 LEVEL: Error (OS) PID : 778276 TID : 1 PROC : db2bp INSTANCE: srees NODE : 000 APPID : *LOCAL.srees.101011170952 EDUID : 1 FUNCTION: DB2 UDB, oper system services, sqlowqueInternal, probe:40 MESSAGE : ZRC=0x870F003E=-2029060034=SQLO_QUE_BAD_HANDLE "Bad Queue Handle" DIA8555C An invalid message queue handle was encountered. CALLED : OS, -, msgsnd OSERR : EINVAL (22) "A system call received a parameter that is not valid." DATA #1 : system V message queue identifier., PD_TYPE_SYSV_QUEUE_ID, 4 bytes 0x0730000A DATA #2 : Pointer, 8 bytes 0x0000000110050738 DATA #3 : unsigned integer, 8 bytes 31 No database connection is possible after that, from the window where we were doing the pipe into less. Even after killing db2bp, we still can't connect. Either db2stop force or closing the shell where the connect was attempted will fix it. And also note that unless you kill db2bp, it will just keep running, flooding db2diag.log - even after db2stop force - until db2bp is killed or the containing shell is closed. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * db2 CLP users * **************************************************************** * PROBLEM DESCRIPTION: * * When a SP returning a huge result set is executed and output * * via pipe, db2diag.log is heavily dumped with messages due to * * bad queue handle. No database connection is possible after * * that. * * unless b2bp is killed, it will just keep running, flooding * * db2diag.log - even after db2stop force - until db2bp is * * killed or the containing shell is closed. * **************************************************************** * RECOMMENDATION: * * Upgrade to db2_v97fp4 * **************************************************************** | |
Local Fix: | |
available fix packs: | |
DB2 Version 9.7 Fix Pack 4 for Linux, UNIX, and Windows | |
Solution | |
Problem fixed at the current fixpack and applied to future releases too. | |
Workaround | |
not known / see Local fix | |
BUG-Tracking | |
forerunner : APAR is sysrouted TO one or more of the following: IC73631 IC87548 follow-up : | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 04.01.2011 28.04.2011 28.04.2011 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
9.7.0.4 |