Feedback
Did this article resolve your question/issue?

   

Article

Memory leak when streaming CLOB data repeatedly with the Connect for JDBC Oracel Driver

Information

 
TitleMemory leak when streaming CLOB data repeatedly with the Connect for JDBC Oracel Driver
URL NameMemory-leak-when-streaming-CLOB-data-repeatedly-with-the-Connect-for-JDBC-Oracel-Driver
Article Number000184727
EnvironmentProduct: Connect for JDBC Oracle Driver
Version: 5.1
OS: All Supported
Database: Oracle
Application: N/A
Question/Problem Description
Memory leak when streaming CLOB data repeatedly with the Connect for JDBC Oracel Driver

An exception occurs with the Connect for JDBC Oracle driver when repeatedly streaming clob data.

Oracle's Thin driver works.

According to Oracle's documentation on temporary LOB objects: 

In some circumstances, XMLType method getClobVal() returns a temporary CLOB value. If getClobVal() is called programmatically, the temporary LOB value must be explicitly freed when it is no longer in use. 
This can be done by calling the PL/SQL method DBMS_LOB.freeTemporary() or its equivalent in Java or C (OCI). The method DBMS_LOB.isTemporary() can be used to test whether a CLOB value is temporary. 
The memory referred to as "Other Allocated" is found to increase and eventually the PGA memory limits will be exceeded.

 
Steps to Reproduce
Clarifying Information
Error Messagejava.sql.SQLException: DataDirectOracle JDBC DriverOracleORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT
Defect Number43331, 40778
Enhancement Number
Cause
The JDBC driver was not properly handling the objects in memory.
Resolution
Fixed in hotfix 5.1.4.000333

Refer to "Connect for JDBC hot fix download and install instructions" for instructions on how to download and install the hot fix.
Workaround
Notes
Last Modified Date7/27/2016 4:18 PM
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.