Check up the V$Open_Cursor view for finding out the errant SQL,
select SQL_TEXT,count(*),USER_NAME from
V$OPEN_CURSOR group by SQL_TEXT,USER_NAME
order by count(*);
> ----------
> From: Bill Burke
> Reply To: JBoss-User
> Sent: Tuesday, March 6, 2001 10:15 AM
> To: JBoss-User
> Subject: Re: [jBoss-User] maximum open cursors exceeded
>
> Where does that get me? Shouldn't the number of open cursors get
> cleaned up if I'm closing the ResultSet, Statement, and Connection?
>
> Regards,
> Bill
>
> Guy Rouillier wrote:
>
> > Have you tried increasing the number of open cursors allowed?
> >
> > ----- Original Message -----
> > From: "Bill Burke" <[EMAIL PROTECTED]>
> > To: "JBoss-User" <[EMAIL PROTECTED]>
> > Sent: Monday, March 05, 2001 10:52 PM
> > Subject: Re: [jBoss-User] maximum open cursors exceeded
> >
> >
> >> I tried closing the ResultSet before the Statement and still, after
> >> awhile, I get maximum open cursors exceeded. Anybody else run into
> this
> >> problem with regular EJBs?
> >>
> >> Thanks,
> >> Bill
> >>
> >> Bill Burke wrote:
> >>
> >>> I don't know if this is wrong to do, but I'm using an Oracle
> >>> connection pool that I created for my EJB's to execute SQL queries and
>
> >>> updates. The problem is, after awhile I get a "maximum open cursors
> >>> exceeded" error from Oracle. I'm running on RedHat linux 6.2 with an
> >>> Oracle DB running on NT. I'm using the jdbc:oracle:thin drivers.
> >>>
> >>> jboss.jcml:
> >>> <mbean name="DefaultDomain:service=XADataSource,name=oraclePool">
> >>> ....
> >>> </mbean>
> >>>
> >>> Java code is below.
> >>> Some things to note, executeSQLUpdate and executeSQLQuery. I can't
> >>> seem to find out where I'm not cleaning up connections. Do you have
> >>> to close the ResultSet? The JDBC docs say that if you close the
> >>> Statement, then your result sets will be closed as well.
> >>>
> >>> Thanks in advance,
> >>> Bill
> >>>
> >>> Java Code:
> >>>
> >>>
> >>> import java.io.*;
> >>> import java.rmi.*;
> >>> import javax.ejb.*;
> >>> import java.util.*;
> >>> import javax.naming.*;
> >>> import com.ctone.services.utils.*;
> >>> import com.ctone.services.constants.*;
> >>> import com.ctone.services.framework.*;
> >>> import javax.sql.*;
> >>> import java.sql.*;
> >>>
> >>> public class CTSQLServiceBean extends CTServiceBean
> >>> {
> >>> public CTSQLServiceBean()
> >>> {
> >>> super();
> >>> }
> >>>
> >>> private Connection getConnection() throws Exception
> >>> {
> >>> javax.sql.DataSource source =
> >>> (javax.sql.DataSource)getInitialContext().lookup("java:/oraclePool");
> >>> return source.getConnection();
> >>> }
> >>>
> >>> public int executeSQLUpdate(String sqlUpdate) throws RemoteException
> >>> {
> >>> Connection connect = null;
> >>> Statement statement = null;
> >>> int rowCount = 0;
> >>>
> >>> try
> >>> {
> >>> connect = getConnection();
> >>> if (connect == null)
> >>> {
> >>> ServicesLog.logAndThrow( CTExceptionType.RECOVERABLE,
> >>> "Unable to connect to database." );
> >>> }
> >>> ServicesLog.log( 5, "Got connection, creating statement..." );
> >>>
> >>> statement = connect.createStatement();
> >>> if (statement == null)
> >>> {
> >>> ServicesLog.logAndThrow( CTExceptionType.RECOVERABLE,
> >>> "Unable to create SQL statement for: '" + sqlUpdate
> >>> + "'" );
> >>> }
> >>> ServicesLog.log( 5, "Created statement, executing query..." );
> >>>
> >>> rowCount = statement.executeUpdate( sqlUpdate );
> >>> if (rowCount == 0)
> >>> {
> >>> ServicesLog.log( 5, "No rows affected by SQL statement '" +
> >>> sqlUpdate + "'" );
> >>> }
> >>> else
> >>> {
> >>> ServicesLog.log( 5, String.valueOf( rowCount ) + " rows affected
> >>> by SQL statement..." );
> >>> }
> >>> }
> >>> catch (SQLException sqe)
> >>> {
> >>> ServicesLog.logAndThrow( CTExceptionType.RECOVERABLE,
> >>> "Unable to execute SQL query: '" + sqlUpdate + "'",
> >>> sqe );
> >>> }
> >>> catch (Exception ex)
> >>> {
> >>> ServicesLog.logAndThrow( CTExceptionType.RECOVERABLE,
> >>> "Unable to get connection pool Driver.",
> >>> ex );
> >>> }
> >>> finally
> >>> {
> >>> if (statement != null)
> >>> {
> >>> try
> >>> {
> >>> statement.close();
> >>> }
> >>> catch (SQLException sqe)
> >>> {
> >>> }
> >>> }
> >>>
>
> >>> if (connect != null)
> >>> {
> >>> try
> >>> {
> >>> connect.close();
> >>> }
> >>> catch (SQLException sqe)
> >>> {
> >>> }
> >>> }
> >>> }
> >>>
> >>> return rowCount;
> >>> }
> >>>
> >>> public CTResultSet executeSQLQuery(String sqlQuery) throws
> >>> RemoteException
> >>> {
> >>> Connection connect = null;
> >>> Statement statement = null;
> >>> CTResultSet results = null;
> >>>
> >>> try
> >>> {
> >>> connect = getConnection();
> >>> if (connect == null)
> >>> {
> >>> ServicesLog.logAndThrow( CTExceptionType.RECOVERABLE,
> >>> "Unable to connect to database." );
> >>> }
> >>> ServicesLog.log( 5, "Got connection, creating statement..." );
> >>>
> >>> statement = connect.createStatement();
> >>> if (statement == null)
> >>> {
> >>> ServicesLog.logAndThrow( CTExceptionType.RECOVERABLE,
> >>> "Unable to create SQL statement for query: '" +
> >>> sqlQuery + "'" );
> >>> }
> >>> ServicesLog.log( 5, "Created statement, executing query..." );
> >>>
> >>> ResultSet resultSet = statement.executeQuery( sqlQuery );
> >>> if (resultSet == null)
> >>> {
> >>> ServicesLog.log( 5, "No results returned for query '" + sqlQuery
> >>> + "'" );
> >>> }
> >>> else
> >>> {
> >>> ServicesLog.log( 5, "Got results from query..." );
> >>> results = new CTResultSet( resultSet );
> >>> }
> >>> }
> >>> catch (SQLException sqe)
> >>> {
> >>> ServicesLog.logAndThrow( CTExceptionType.RECOVERABLE,
> >>> "Unable to execute SQL query: '" + sqlQuery + "'",
> >>> sqe );
> >>> }
> >>> catch (Exception ex)
> >>> {
> >>> ServicesLog.logAndThrow( CTExceptionType.RECOVERABLE,
> >>> "Unable to get connection pool Driver.",
> >>> ex );
> >>> }
> >>> finally
> >>> {
> >>> if (statement != null)
> >>> {
> >>> try
> >>> {
> >>> statement.close();
> >>> }
> >>> catch (SQLException sqe)
> >>> {
> >>> }
> >>> }
> >>>
> >>> if (connect != null)
> >>> {
> >>> try
> >>> {
> >>> connect.close();
> >>> }
> >>> catch (SQLException sqe)
> >>> {
> >>> }
> >>> }
> >>> }
> >>>
> >>> return results;
> >>> }
> >>> }
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> --------------------------------------------------------------
> >>> To subscribe: [EMAIL PROTECTED]
> >>> To unsubscribe: [EMAIL PROTECTED]
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> --------------------------------------------------------------
> >> To subscribe: [EMAIL PROTECTED]
> >> To unsubscribe: [EMAIL PROTECTED]
> >>
> >>
> >
> >
> >
> > --
> > --------------------------------------------------------------
> > To subscribe: [EMAIL PROTECTED]
> > To unsubscribe: [EMAIL PROTECTED]
> >
> >
> >
> >
>
>
>
>
> --
> --------------------------------------------------------------
> To subscribe: [EMAIL PROTECTED]
> To unsubscribe: [EMAIL PROTECTED]
>
--
--------------------------------------------------------------
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]