home clear 64x64
en blue 200x116 de orange 200x116 info letter User
suche 36x36
Latest versionsfixlist
11.1.0.7 FixList
10.5.0.9 FixList
10.1.0.6 FixList
9.8.0.5 FixList
9.7.0.11 FixList
9.5.0.10 FixList
9.1.0.12 FixList
Have problems? - contact us.
Register for free anmeldung-x26
Contact form kontakt-x26

DB2 - Problem description

Problem IC72058 Status: Closed

IN DPF SYSTEM, LOAD FROM CURSOR WITH LOBS LARGER THAN 32KB COULD CAUSE A
MEMORY LEAK.

product:
DB2 FOR LUW / DB2FORLUW / 970 - DB2
Problem description:
In DPF system, LOAD from CURSOR with LOBs larger than 32KB could 
cause memory leak such as 
 
PoolID     PoolName   TotalSize(Bytes)     %Bytes TotalCount 
%Count LOC   File 
5          utilh      592                  52.86  4 
4.76   968   sqlrkrpc.C 
 
(in v97 it would be from the application heap instead of util 
heap, such as 
 
PoolID     PoolName   TotalSize(Bytes)     %Bytes TotalCount 
%Count LOC   File 
1          apph       1480                 0.36   10 
0.86   1077  sqlrkrpc.C 
 
To detect the leak monitor a database partition other that the 
coord partition.
Problem Summary:
**************************************************************** 
* USERS AFFECTED:                                              * 
* All DB2 V9.1 and later versions performing a LOAD from       * 
* cursor in a DPF environment.                                 * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* In a DPF system running DB2 V9.1, 9.5 or 9.7 a LOAD from     * 
* CURSOR with LOBs larger that 32KB could cause                * 
* a memory leak in the utility heap (in V9.1) or application   * 
* heap (in 9.5 or 9.7) leading to increased memory usage on    * 
* the server.                                                  * 
*                                                              * 
* Secondary symptoms include:                                  * 
* - LOAD may fail with error SQL0973, out of utility heap.     * 
* - Degraded load/backup performance on v9.1 since load/backup * 
* are basing resource usage on remaining utility heap.         * 
* - Increased system memory usage over time.                   * 
* - Potential out-of-memory failures if any enforced limits    * 
* are reached.                                                 * 
*                                                              * 
* Depending on the DATABASE_MEMORY configuration setting, if   * 
* set to a fixed value, you may see the following message in   * 
* the db2diag.log file indicating out of memory errors for     * 
* utility heap.                                                * 
*                                                              * 
* 2010-08-09-20.11.52.089542-300 E366984A702        LEVEL:     * 
* Warning                                                      * 
* PID    : 570528              TID  : 1          PROC :        * 
* db2lfrm0 1                                                   * 
* INSTANCE: db2inst1            NODE : 001        DB  : SAMPLE * 
* APPHDL  : 0-912                APPID:                        * 
* 12.34.56.789.1234.100810000320                               * 
* AUTHID  : USER1                                              * 
* FUNCTION: DB2 UDB, SQO Memory Management,                    * 
* sqloMemLogPoolConditions, probe:30                           * 
* DATA #1 : <preformatted>                                     * 
* Out of memory failure for Backup/Restore/Util Heap           * 
* (UTIL_HEAP_SZ) on node 1.                                    * 
* Requested block size          : 34500 bytes.                 * 
* Physical heap size            : 551616512 bytes.             * 
* Configured heap size          : 409600000 bytes.             * 
* Unreserved memory used by heap : 142016512 bytes.            * 
* Unreserved memory left in set  : 0 bytes.                    * 
*                                                              * 
* The db2pd command can be used to identify the memory leak,   * 
* for example after the load from cursor is complete use the   * 
* db2pd command on a non-coordinator  database partition :     * 
*                                                              * 
* db2pd -dbp partition# -db <db_name> -memb 5 |grep 896367698  * 
*                                                              * 
* which should return output similar to                        * 
*                                                              * 
* Address            PoolID    PoolName    BlkAge              * 
* Size(Bytes)  I LOC  File                                     * 
* 0x07800003166E0068 5          utilh        55174      42943  * 
*       1 968  896367698                                       * 
*                                                              * 
* The hash ID 896367698  identifies the specific DB2 source    * 
* file.                                                        * 
*                                                              * 
* Or you can monitor memory usage in the utility heap and      * 
* observe an increasing pattern after the execution of each    * 
* LOAD, for example:                                           * 
*                                                              * 
* db2pd -dbp partition# -db <db_name> -memp |egrep             * 
* "Address|utilh"                                              * 
* Address            MemSet  PoolName  Id    Overhead  LogSz   * 
*    LogUpBnd    LogHWM      PhySz      PhyUpBnd    PhyHWM     * 
*  Bnd BlkCnt CfgParm                                          * 
* 0x07800002200012E0 SAMPLE  utilh      5    0          352    * 
*     20512768    352        65536      20512768    65536      * 
* Ovf 2      UTIL_HEAP_SZ                                      * 
*                                                              * 
* after the LOAD is complete issue again the same command      * 
*                                                              * 
* db2pd -dbp partition# -db <db_name> -memp |egrep             * 
* "Address|utilh"                                              * 
* Address            MemSet  PoolName  Id    Overhead  LogSz   * 
*    LogUpBnd    LogHWM      PhySz      PhyUpBnd    PhyHWM     * 
*  Bnd BlkCnt CfgParm                                          * 
* 0x07800002200012E0 SAMPLE  utilh      5    0          648    * 
*     20512768    6039059    65536      20512768    9568256    * 
* Ovf 4      UTIL_HEAP_SZ                                      * 
*                                                              * 
* You should observe increasing values in at least LogSz,      * 
* LogHWM and BlkCnt.                                           * 
*                                                              * 
* Note that in DB2 9.5 and 9.7 the memory leak would be from   * 
* the application heap instead of utility                      * 
* heap:                                                        * 
*                                                              * 
* db2pd -dbp partition# -db <db_name> -memb appctl |grep       * 
* 896367698                                                    * 
*                                                              * 
* which should return output similar to                        * 
*                                                              * 
* Address            PoolID    PoolName    BlkAge Size(Bytes)  * 
* I LOC  File                                                  * 
* 0x0700000010022208 1          apph        75    148          * 
* 1 1025  896367698                                            * 
*                                                              * 
* Or you can monitor increasing memory usage in apph using the * 
* -memp option like :                                          * 
*                                                              * 
* db2pd -dbp partition# -db <db_name> -memp |egrep             * 
* "Address|apph"                                               * 
* Address            MemSet  PoolName  Id    Overhead  LogSz   * 
*    LogUpBnd    LogHWM      PhySz      PhyUpBnd    PhyHWM     * 
*  Bnd BlkCnt CfgParm                                          * 
* 0x0700000010000868 AppCtl  apph      1    0          6682    * 
*     524288      6682        65536      524288      65536     * 
*  Phy 10    APPLHEAPSZ                                        * 
* 0x0700000010000720 AppCtl  apph      1    0          10488   * 
*    524288      11224      65536      524288      65536       * 
* Phy 16    APPLHEAPSZ                                         * 
* 0x0700000010000490 AppCtl  apph      1    0          13576   * 
*    524288      85522      131072      524288      262144     * 
*  Phy 32    APPLHEAPSZ                                        * 
*                                                              * 
* and after a load is complete execute the same command:       * 
*                                                              * 
* db2pd -dbp partition# -db <db_name> -memp |egrep             * 
* "Address|apph"                                               * 
* Address            MemSet  PoolName  Id    Overhead  LogSz   * 
*    LogUpBnd    LogHWM      PhySz      PhyUpBnd    PhyHWM     * 
*  Bnd BlkCnt CfgParm                                          * 
* 0x0700000010000868 AppCtl  apph      1    0          6682    * 
*     524288      6682        65536      524288      65536     * 
*  Phy 10    APPLHEAPSZ                                        * 
* 0x0700000010000720 AppCtl  apph      1    0          10488   * 
*    524288      11224      65536      524288      65536       * 
* Phy 16    APPLHEAPSZ                                         * 
* 0x0700000010000490 AppCtl  apph      1    0          13872   * 
*    524288      86286      131072      524288      262144     * 
*  Phy 34    APPLHEAPSZ                                        * 
*                                                              * 
* Monitor LogSz, LogHWM, and BlkCnt which should all increase  * 
* after each LOAD execution.                                   * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 Version 9.7 Fix Pack 4.                       * 
****************************************************************
Local Fix:
To work around the problem do not load from cursor. Load from a 
file for example does not exhibit the same behavior.
available fix packs:
DB2 Version 9.7 Fix Pack 4 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 5 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 6 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 7 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 8 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9 for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 9a for Linux, UNIX, and Windows
DB2 Version 9.7 Fix Pack 10 for Linux, UNIX, and Windows

Solution
The fix in included in DB2 Version 9.7 Fix Pack 4.
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
20.10.2010
19.04.2011
19.04.2011
Problem solved at the following versions (IBM BugInfos)
9.7.FP4
Problem solved according to the fixlist(s) of the following version(s)
9.7.0.4 FixList