This content has been marked as final. Show 11 replies
Maybe we are on the same ship.
Please check the dump file of oracle, and see if you have an error like
Message: ORA-04030: out of process memory when trying to allocate 16396 bytes (QERHJ hash-joi,QERHJ Bit vector)
I have not checked yet.
In which file did you have that error message?
Will it be possible for you to post sample code of your data generator to reproduce this error?
Have you tried using latest ODP.NET 11g (22.214.171.124.20)?
Your test data generator only inserts the data or it reads too? (as I see that the exception is coming from read.)
Unfortunately I am not able to post the sample code because the application is qute complex. I am using an OR-Mapper which ectually creates the insert statement for my objects.
I have not used a new version of ODP.NET so fare. I hoped that someone else encountered the same problem and couild give me some advice. Now I am trying to reproduce the problem and check the trace file of Oracle if there is any information which would help me. Reproducing is not easy because I usually got this error after running my test data generator for at least 14 hours.
The Exception is comming for a data read
the stacktrace is
at System.Data.Common.DataAdapter.FillLoadDataRow(DataSet dataset, ....)
It comes from a data read, but only a OR-Mapper specific read. I am acturlly saving an object and the OR-Mapper saves the object and then reads it back to the memory to get the id of the primary key which is created by a sequence. The abount of data read is small so this can not case the error, but I am execuing the same method many thousand times before I finally get thet error
Can you check if turning off statement caching helps? You may consult the user guide about statement caching.
I have set statement chaching to 1 on the connection string but it did not help.
A couple suggestions to help hone in on what's going on:
1) If you monitor both virtual bytes and private bytes using perfmon, does memory increase for one of the other the longer the app runs? If private bytes continually increase, thats a memorly leak, If virtual bytes increase but private bytes stay steady, thats fragmentation.
1a) Make sure you're calling dispose on everything you can.
2) You could take a memory hang dump using ADPlus, load sos.dll into windbg and then look at the heap using !dumpheap -stat
3) You could use DebugDiag to monitor the app memory usage.
The nice thing about debugdiag is it will automatically generate a summary report that includes suggestions to troubleshot further
Hope it helps,
We're seeing the same issue in our application as well. We're opening a ticket in Metalink for Oracle.
I just thought to do the same.
Please let us know when you got a solution.
Just to end this thread here. After installing the latest Oracle patch on my client machine (ODP.Net dlls changed from 10.2.0.2.20 to 10.2.0.3.3) the problem disappeared. It seems there was a memory leak with the 10.2.0.2.20 version.