Well, that didn't seem to definite solve the problem.
What my application (actually a windows service) does is parse a big file.
Each line is handled in a transaction, and each line demands many queries and inserts. A line could tipically demand 100 inserts, although it's supposed to support 2000.
If the service is stopped, I have a method to resume from the last line we have reached.
What seems odd to me is that I don't have concurrent connections in this application. What it means that I read the file sequentially in one thread and I never intentionally open more than one connection at the same time. Actually, with LLBLGen Pro I never open connections myself.
So, what it happens is that at some point, the Max Pool Size is reached and I start getting errors like "[b]Connection request timed out[/b]" or "[b]ORA-12542: TNS:address already in use.[/b]". The service, in this case, automatically restarts and the same error messages are thrown all the time.
When I make queries to the v$session table I get that the number of sessions equals the Max Pool Size + 1. This remains like this for hours.
My question is why, if I'm not supposed to have more than one connection in use at the time, I can't get new connections from the pool. Seems that the pool does not give any of the inactive connections to the application.
Another odd thing is if I stop the service, wait for the sessions go to zero and restart it, it starts again with the Max Pool Size + 1 value. So I'm stucked again in the same situation.
Finally, if I disable the Connection Pooling, the "[b]Connection request timed out[/b]" or "[b]ORA-12542: TNS:address already in use.[/b]" happen more often.
I will prepare a zip with the sample code to upload in a next post.
Thanks