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 IC91289 Status: Closed

ORACLE WRAPPER LEAKS MEMORY WHEN ITERATIVELY EXECUTES DYNAMIC IUD
STATEMENTS IN A PACKAGE

product:
DB2 FOR LUW / DB2FORLUW / A10 - DB2
Problem description:
When some IUD(INSERT/UPDATE/DELETE) statements are executed 
against Oracle nicknames iteratively in a package, the 
statements contain some host variables, and there is no COMMIT 
operation between each IUD, Oracle Wrapper may leak memory. 
 
The size of leaked memory is approximately equal to: (Number of 
Fixed-length host variables) * 2 * (Number of IUDs) bytes. 
 
The cause of memory leak is that, some assistant storages are 
not cleaned up properly among reuses of an opened remote 
statement object. 
 
You can reproduce memory leak by following procedure. Turn off 
AUTOCOMMIT before running: 
 
CREATE PROCEDURE TP () 
  SPECIFIC TP 
  LANGUAGE SQL 
  NOT DETERMINISTIC 
  EXTERNAL ACTION 
  MODIFIES SQL DATA 
  CALLED ON NULL INPUT 
  INHERIT SPECIAL REGISTERS 
BEGIN 
 
DECLARE C1V   VARCHAR(48); 
DECLARE DV   VARCHAR(48); 
DECLARE FLAG     INTEGER; 
 
SET FLAG=0; 
SET DV='AAA'; 
 
LOOP_IUD: LOOP 
 
DELETE FROM nickname1 WHERE C1=DV; 
INSERT INTO nickname2 VALUES(C1V); 
 
SET FLAG = FLAG + 1; 
  IF (FLAG = 1000) THEN 
        LEAVE LOOP_IUD; 
  END IF; 
END LOOP LOOP_IUD; 
COMMIT; 
 
END@ 
 
NOTE: nickname1 and nickname2 are two nicknames pointing to 
Oracle tables on the same Oracle data source. 
 
This memory leak usually happens in a Q Replication 
scenario(target is Oracle): 
1. QApply program tries to INSERT/UPDATE/DELETE target table in 
Oracle, 
2. But the INSERT/UPDATE/DELETE operation fails (because of 
conflicting key on an INSERT, or NOTFOUND on a DELETE/UPDATE), 
3. So QApply program inserts the IBMQREP_EXCEPTIONS table with 
the SQL code and other information for row changes that could 
not be applied. 
4. QApply program continues to INSERT/UPDATE/DELETE target table 
in Oracle. 
 
The memory leak happens at 3. Normally the memory leak is not 
obvious since QApply program does not have to inserts the 
IBMQREP_EXCEPTIONS table so frequently.
Problem Summary:
**************************************************************** 
* USERS AFFECTED:                                              * 
* The user is running oracle wrapper.                          * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* See Error Description                                        * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to Federation Server v10.1 fp3.                      * 
****************************************************************
Local Fix:
No local fix. A possible workaround is COMMIT after each IUD 
statement.
available fix packs:
DB2 Version 10.1 Fix Pack 3 for Linux, UNIX, and Windows
DB2 Version 10.1 Fix Pack 4 for Linux, UNIX, and Windows
DB2 Version 10.1 Fix Pack 3a for Linux, UNIX, and Windows
DB2 Version 10.1 Fix Pack 6 for Linux, UNIX, and Windows

Solution
The problem was firstly fixed on Federation Server v10.1 fp3.
Workaround
not known / see Local fix
Timestamps
Date  - problem reported    :
Date  - problem closed      :
Date  - last modified       :
03.04.2013
03.10.2013
03.10.2013
Problem solved at the following versions (IBM BugInfos)
Problem solved according to the fixlist(s) of the following version(s)
10.1.0.3 FixList
10.1.0.3 FixList