Brian,
I've experienced differences between JDBC executed vs Toad executed statements. If I remember correctly, our issue at the time was due to differences in connection variables: Toad and the JDBC connection did not have exactly the same connection settings. You might want to look at connection variables to make sure they're identical.
You probably know all of this but here are a few suggestions...
What you first need to do is isolate the problem *outside* of your web app. There are too many differences between a WebApp executed statement vs Toad...
I'd setup the statement in these environment: 1- Toad 2- SQL*Plus 2- Plain JDBC 3- iBatis only (no webapp)
Using SQL*Plus will allow you to know if Toad is doing something fancy. Your Plain JDBC setup will allow you to know if your WebApp is altering your JDBC connections or statements, etc.
You'll waste a great amount of time if you keep comparing high level executed query (web, java, iBatis, jdbc) vs a very low level query (Toad uses native Oracle client librairies): there are just to many differences between the two...
Also, you state that the statement "will not complete until the first one does". Is the first statement a SELECT statement or are you altering the data (UPDATE, INSERT, etc.)? If so, play with concurency settings on your connection (java.sql.Connection.TRANSACTION_*)...
Hope this helps, Philippe
Brian Barnett wrote:
We execute a query through the web app that takes 55 seconds to complete. While this query is executing, we execute another query against the same table in a different browser. It normally takes a few seconds, but it will not complete until the first one does.
If we do the same thing in two instances of TOAD (sql query tool), the second query returns immediately.
Can someone shed some light on what is going on, where to look, etc.?
Thanks, Brian Barnett