Atomikos Forum

ORA-01000: maximum open cursors exceeded

I'm getting the following error once I have too much load on my system:

ORA-01000: maximum open cursors exceeded

The max cursor / connection limit is set to 300 on my little XE instance, which should be plenty ... unless somehow Atomikos is not letting go of connections once they wrap up.

This is an older app that I'm doing a POC to move off the old paradigm of one dedicated transaction manager per datasource to one shared XA Atomikos manager and Atomikos pool.  I've slammed hellacious amounts of load on the server before without ever running into any sort of open cursor limit.

There are a couple of things I'm doing that is likely different from traditional use.  Datasource pools are not set up through JNDI but rather created on the fly from a custom configuration, so that I can link in new datasources on the fly, and apportion pool properties on a per-purpose basis as runtime needs may change.  For example, against a single database I have one pool created on the fly for everyday transactions that uses the XA Atomikos pool.  A second pool is non-XA Atomikos and is used for JMS delivery from Oracle AQ (in the same database).  I have an enormous amount of configuration everywhere that would be hard to separate out at this point for a simple example, and I'm hoping someone just recognizes the Oracle error as something I'm doing wrong.

The thing that bugs me most is that I can drop in 50 test instructions into my app and they all run flawlessly.  When I try 75, still no problem.  Any more than about 80 though and I get the ORA-01000 error.  This makes no sense as (a) the system is throttled to only handle 20 simultaneous instructions at any given point, and (b) each instruction's processing should be fully committed or rolled back by the time the connection is returned to the pool, and I'm assuming that means that all cursors open on the first use of the connection are closed by the time the connection comes around into the pool again.  In theory, I could have millions of instructions in the queue -- my app would still chug along at 20 instructions in any given instant and not care how many instructions are pending in AQ until it's finished.

I'm stumped.  Are previous cursors interfering with new business?  What can I do to stop this?
Bill Milligan Send private email
Sunday, May 15, 2016
 
 
I should mention -- I'm using the spring-boot-starter-jta-atomikos version 1.3.3 bundle of atomikos jars, which appears to link in all 3.9.3 artifacts.

I'm very, very new to Atomikos, and I'm still trying to figure out if this app can be ported to use it or something like it.  Please be gentle :)
Bill Milligan Send private email
Sunday, May 15, 2016
 
 
Check if all your statements are closed in time, and also any result sets?

If you get a subscription then we can assist you to dig this out :-)
Guy Pardon Send private email
Friday, June 10, 2016
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics