DB2 - Problem description
| Problem IC77702 | Status: Closed |
INFINITE LOOP IN SQLOREST CALLED BY SQLBFREEUPSLOT WHEN BUFFER POOL IS FULL | |
| product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
| Problem description: | |
When a buffer pool is full, and at the same time a new object
(e.g. table, index, etc...) needs to be loaded into the same
buffer pool, DB2 will attempt to free an existing buffer pool
slot in order to make space for the new object. The agent
working on this task may enter an infinite loop with the
following call stack:
ossSleep
sqlorest
sqlbFreeUpSlot
sqlbGetVictimSlot
sqlbGetPageFromDisk
sqlbfix
sqlbFixDataEMP
sqlbIsExtentAllocated
sqlbDMScheckObjAlloc
sqlbGetDiskPageID
sqlbGetPageFromDisk
sqlbfix
The call stack file will also show that the agent will be
holding the SQLO_LT_SQLB_POOL_CB__extentAnchorTableLatch latch,
thus blocking other EDUs waiting for the same latch. The top
routines, sqlorest and ossSleep, will be executed infinitely.
DB2 trace of this agent will show the following repetitive
calls:
102 sqlorest entry [eduid 70 eduname db2agent]
103 sqlorest data [probe 10]
217 sqlorest exit
218 sqeAgent::QueryInterrupt entry [eduid 70 eduname
db2agent]
219 sqeAgent::QueryInterrupt data [probe 70]
220 sqeAgent::QueryInterrupt exit
(...looping back to sqlorest...)
A diagnostic message similar to the following may or may not get
printed in the DB2 diagnostic log:
2011-07-22-16.02.59.639777-240 E18646747A807 LEVEL: Warning
PID : 7999 TID : 70 PROC : db2sysc
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-42 APPID:
10.0.0.100.50918.110722200240
AUTHID : DB2INST1
EDUID : 70 EDUNAME: db2agent (SAMPLE)
FUNCTION: DB2 UDB, Common Trace API, sqlbFreeUpSlot, probe:120
MESSAGE : ADM6082W The current transaction is attempting to do
work that is
not allowed to fail. However, this work could not be
completed as
there are no free pages available in the buffer pool.
Further
attempts will be made to find free pages but in the
future this
situation can be avoided by increasing the size of
buffer pool "BP4"
(ID "2").
However, the instance will likely not hang completely; jobs
requiring buffer pools other than the one running out of space
will continue as normal.
This problem can only be seen in DB2 UDB 9.7 FixPak 1 or newer. | |
| Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * see APAR description * **************************************************************** * PROBLEM DESCRIPTION: * * see APAR description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 UDB 9.7 FixPak 5. * **************************************************************** | |
| Local Fix: | |
Ensure the correst sizing of your buffer pools in order to decrease the likelihood of a buffer pool running out of space. | |
| available fix packs: | |
DB2 Version 9.7 Fix Pack 5 for Linux, UNIX, and Windows | |
| Solution | |
Problem first fixed in DB2 UDB 9.7 FixPak 5. | |
| Workaround | |
not known / see Local fix | |
| Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 25.07.2011 08.12.2011 08.12.2011 |
| Problem solved at the following versions (IBM BugInfos) | |
9.7. | |
| Problem solved according to the fixlist(s) of the following version(s) | |
| 9.7.0.5 |
|