We used to get this too and fixed it by making sure that any Statements and
ResultSets we create are explicitly closed in finally blocks. It appears
that these objects hold a cursor open while they live (one or the other or
both, not too sure so I manage both).

What we now do in fact is manage them as rigorously as we do transactions
and anywhere we create either, we immediately start a "try" block and ensure
that the they are closed in the "finally"  - this required a bit
re-architecting to ensure that all the "close" calls could be done in the
same block of code.

Cheers
Adrian

> -----Original Message-----
> From: Cosmin Cremarenco [SMTP:[EMAIL PROTECTED]]
> Sent: 29 January 2003 12:37
> To:   [EMAIL PROTECTED]
> Subject:      odd oracle error
>
> hello
> at rare, random times we get the following error from our oracle 8i server
> (8.1.7):
> java.sql.SQLException: ORA-01000: maximum open cursors exceeded
>
>  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
>  at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
>  at oracle.jdbc.ttc7.Oopen.receive(Oopen.java:118)
>  at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:466)
>  at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413)
>  at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:432)
>  at
> oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.
> ja
> va:182)
>  at
> oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.
> ja
> va:165)
>  at
> oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnecti
> on
> .java:608)
>  at
> oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java
> :4
> 89)
>  at extranet.wb.WUpdate.selectUpdates(WUpdate.java:93)
>  at org.apache.jsp.whatisnew_jsp._jspService(whatisnew_jsp.java:1184)
>  at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>  at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java
> :2
> 02)
>  at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
>  at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>  at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
> on
> FilterChain.java:247)
>  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
> Ch
> ain.java:193)
>  at
> geweb.control.filters.NoCacheFilterJsp.doFilter(NoCacheFilterJsp.java:43)
>  at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
> on
> FilterChain.java:213)
>  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
> Ch
> ain.java:193)
>  at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.
> ja
> va:260)
>  at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.inv
> ok
> eNext(StandardPipeline.java:643)
>  at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480
> )
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>  at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.
> ja
> va:191)
>  at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.inv
> ok
> eNext(StandardPipeline.java:643)
>  at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480
> )
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>  at
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2397)
>  at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:1
> 80
> )
>  at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.inv
> ok
> eNext(StandardPipeline.java:643)
>  at
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValv
> e.
> java:170)
>  at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.inv
> ok
> eNext(StandardPipeline.java:641)
>  at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:1
> 71
> )
>  at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.inv
> ok
> eNext(StandardPipeline.java:641)
>  at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480
> )
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>  at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.ja
> va
> :174)
>  at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.inv
> ok
> eNext(StandardPipeline.java:643)
>  at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480
> )
>  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>  at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:458)
>  at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:551)
>  at java.lang.Thread.run(Thread.java:536)
>
> before anything I must say that we do close all our PreparedStatement, but
> not the ResultSet.
> AFAIK not closing the ResultSet shouldn't be a problem. We even had some
> tests on this issue and they were successfull.
> the maximum open cursors in our init.ora is 300 and we are using tomcat
> 4.1.12
>
> thanks,
>     cosmin
>
> __________________________________________________________________________
> _
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
> body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
--

It is the strict policy of Truworths that its e-mail facility and all
e-mail communications emanating therefrom, should be utilised for
business purposes only and should conform to high professional and
business standards.   Truworths has stipulated certain regulations in
terms whereof strict guidelines relating to the use and content of
e-mail communications are laid down. The use of the Truworths e-mail
facility is not permitted for the distribution of chain letters or
offensive mail of any nature whatsoever.   Truworths hereby distances
itself from and accepts no liability in respect of the unauthorised
use of its e-mail facility or the sending of e-mail communications
for other than strictly business purposes.   Truworths furthermore
disclaims liability for any  unauthorised instruction for  which
permission was not granted.    Truworths Limited accepts no liability
for any consequences arising from or as a result of reliance on this
message unless it is in respect of bona fide Truworths business for
which proper authorisation has been granted.

Any recipient of an unacceptable communication, a chain letter or
offensive material of any nature is requested to notify the Truworths
e-mail administrator ([EMAIL PROTECTED]) immediately in order that
appropriate action can be taken against the individual concerned.

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to