Array DML

antana

Member
Delphi 6 sp2
DOA 4.0.6.2
Oracle 10.2

I'm using a oracle query with 5 variables and a array buffer of 100 items.
All work fine for hours, the system is havy load, insert million of records in a day.
After 5-6 hours of work i receive a general error
"out of memory" and then the call of executearray give me always an error "invalid pointer".
I must close and restart the application.
The server have a lot of free memory.
I change the program and use only a single insert query, all work fine.

Thank's in advance
 
It seems like a you have a memory leak somewhere in your application. Since it works well with single inserts, the array processing is a likely suspect.
 
This is my first hypothesis, but i create the array at the application start, and never allocate or disallocate memory at all.
Can be a toraclequery problem with array DML?
I only set array values when receive data and when i have 100 items call toraclequery.executearray(0,100)
 
Direct Oracle Access does not allocate any memory for this, so the problem is either in your code or in the Oracle Client. Can you try the same on a PC with a different Oracle Client version?
 
Try FastMM4. Besides being a better memory manager and giving your app a speed boost, it will tell you if leaks are present or not in your application, without requiring an expensive profiler.
AFAIK it works with Delphi 6 too.
 
I have resolved the problem.
I think taht there is a bug somethere, in DOA , oracle or delphi.
I remove the oraclequery.clearvariables;
before to set the variables.
It work fine with simple variable, but with array dml give me the memory problem.
Now all work and the memory use is very low.
 
Back
Top