More on "maximum open cursors exceeded"

It seems a lot of people have been seeing this error message, but reading through the posts on the topic hasn't given me any new insight on the problem. Here's an account of my particular situation:
I am using the XSQL servlet, v.1.0.0.0 with the thin jdbc driver v.1.x. The servlet is running within an Apache server (1.3.12) on a Linux box, and the Oracle database (8.1.5) is located on a Solaris 2.6 machine.
The servlet accepts HTTP connections, performs the corresponding SQL queries and returns the output from the database to the HTTP client. Here's a simple example:
(Sorry about potential bad line breaks.)
client request:
% telnet xsql-host.some.domain 80
Trying xxx.xxx.xxx.xxx
Connected to xsql-host.some.domain.
GET /xsql/test/listall.xsql
<server response here>
listall.xsql:
<?xml version="1.0"?>
<page connection="boss" xmlns:xsql="urn:oracle-xsql">
<accounts>
<xsql:query tag-case="lower" rowset-element="" row-element="accountinfo">
select * from test
</xsql:query>
</accounts>
</page>
Very simple stuff indeed. Now, this has worked perfectly for 3 weeks or so. During this period, the xsql servlet has been stopped and restarted numerous times and the machine hosting the database has been rebooted at least three times. Then, for no apparent reason (as nothing had changed in the setup described above), I started getting "maximum open cursors exceeded" on every request. Since then, I have been unable to get the system working as it had up until now. I haven't restarted the database and I would like to avoid doing so, because that would not be a valid solution for us if the problem reappeared in production. The maximum open cursors setting in Oracle should be correct, since things were running smoothly before.
From what I can see, the problem could be with the servlet not closing its cursors. One post mentioned that it did, but I would appreciate it if this could be double-checked. Considering the database is the only portion of the system which has been kept running for extended periods of time, it seems to me that this might indeed be the problem.
Confirmation, workarounds, suggestions, patches, or a consolation box of chocolates would all be appreciated.
Thanks,
- Fad
([email protected])
null

Check which process is making all the cursors on which database. If it is your procedure, try explicitly closing the cursors. I think the cursors are only implicitely closed after the transaction is ended. If you loop and open a cursor within the loop, that might be the problem.
I also had this problem with Java working over a JDBC connection some time ago on a 815 database. If I recall correctly, that was caused by the JDBC driver and fixed by replacing it with a JDBC driver of 9i.
The following script is what I used previously in a program that can draw a graph from the results. It is ugly, but does the job.
Hope this helps,
L.
select
  'max cursors',
  to_number(value)
from
  v$parameter
where
  name = 'open_cursors'
union
select
  substr(lower(username),1,10)||'('||substr(to_char(ses.sid)||','
  ||to_char(serial#),1,9)||')',
  s.value
from
  v$sesstat s,
  v$statname n,
  v$session ses
where
s.statistic#=n.statistic#
and ses.sid=s.sid
and n.name like '%cursor%'
and n.name like '%current%'
and not (ses.sid between 1 and 6)

Similar Messages

  • Oracle and "Maximum open cursors exceeded"

    Hi,
    I am using Weblogic 7.0sp2 with Oracle 9.2.0. Since we are using manual JTA
    transactions and the 9.2 drivers are buggy in that respect, we are using the
    9.0.1 thin drivers delivered with weblogic.
    The problem I have is that after a while, we get the now classic "Maximum open
    cursors exceeded" error on connections from our connection pool (used through
    a
    TX datasource). I have of course checked all our JDBC code and it is fine. We
    do not leave any statement/connection open. In fact, I am certain that the
    problem is not caused by our applicative code.
    The reason I am so positive is that the numbers of open (cached) cursors is
    growing, even though there is no activity on our application (I mean no
    activity at all). The number of cursors is regurlarly increasing by one
    every 5 minutes until it reaches the maximum allowed for a session.
    I have listed the statements corresponding to the opened cursors (they
    do not belong to our code, as you might have guessed):
    SELECT sysdate, user from dual
    select longdbcs from javasnm$ where short = :1
    select longname from javasnm$ where short = :1
    As you can see, there are only three different statements. You can get
    the statements from the system view v$open_cursor for a given session
    but it will only give one row per different statement. If you want to know
    the # of opened cursors in your cursor, use v$sesstat with statistic# = 3
    (opened cursor current).
    I suspect something is wrong in the connection testing done by weblogic
    for the pool (I have activated test on reserved connections and test table
    name is "dual") that leaves a resultset/statement behind. What is weird
    though is that the refresh period is still 0 (not 5 minutes as you would
    expect from the cursor growth rate...).
    I would not say that it is an Oracle bug (as stated in some BEA FAQ I read)
    since our application JDBC code does not exhibit the same problem. The
    problem appeared with recent version of WebLogic for which the session
    cursor cache is enabled, I suppose for performance reasons - this
    is set by isssuing "ALTER SESSION SET SESSION_CACHED_CURSORS = ...".
    Talking about this, does anybody know to which value WebLogic sets this
    parameter when intializing the connection (this is neither
    documented/configurable)?
    Up to now, I have come up with possibly two workarounds, neither of which
    is satisfying:
    - resetting the pool from time to time
    - issuing "ALTER SESSION SET SESSION_CACHED_CURSORS = 0" when I get a
    connection from the pool. I have not tested this one personally (read
    in a newsgroup that someone else did successfully) but it is supposed
    to reset the cursor cache that is causing the trouble.
    Any help will be greatly appreciated,
    Regards,
    Thierry.

    Thierry Rouget wrote:
    Hi,
    I am using Weblogic 7.0sp2 with Oracle 9.2.0. Since we are using manual JTA
    transactions and the 9.2 drivers are buggy in that respect, we are using the
    9.0.1 thin drivers delivered with weblogic.
    The problem I have is that after a while, we get the now classic "Maximum open
    cursors exceeded" error on connections from our connection pool (used through
    a
    TX datasource). I have of course checked all our JDBC code and it is fine. We
    do not leave any statement/connection open. In fact, I am certain that the
    problem is not caused by our applicative code.
    The reason I am so positive is that the numbers of open (cached) cursors is
    growing, even though there is no activity on our application (I mean no
    activity at all). The number of cursors is regurlarly increasing by one
    every 5 minutes until it reaches the maximum allowed for a session.
    I have listed the statements corresponding to the opened cursors (they
    do not belong to our code, as you might have guessed):
    SELECT sysdate, user from dual
    select longdbcs from javasnm$ where short = :1
    select longname from javasnm$ where short = :1
    As you can see, there are only three different statements. You can get
    the statements from the system view v$open_cursor for a given session
    but it will only give one row per different statement. If you want to know
    the # of opened cursors in your cursor, use v$sesstat with statistic# = 3
    (opened cursor current).
    I suspect something is wrong in the connection testing done by weblogic
    for the pool (I have activated test on reserved connections and test table
    name is "dual") that leaves a resultset/statement behind. What is weird
    though is that the refresh period is still 0 (not 5 minutes as you would
    expect from the cursor growth rate...).
    I would not say that it is an Oracle bug (as stated in some BEA FAQ I read)
    since our application JDBC code does not exhibit the same problem. The
    problem appeared with recent version of WebLogic for which the session
    cursor cache is enabled, I suppose for performance reasons - this
    is set by isssuing "ALTER SESSION SET SESSION_CACHED_CURSORS = ...".
    Talking about this, does anybody know to which value WebLogic sets this
    parameter when intializing the connection (this is neither
    documented/configurable)?
    Up to now, I have come up with possibly two workarounds, neither of which
    is satisfying:
    - resetting the pool from time to time
    - issuing "ALTER SESSION SET SESSION_CACHED_CURSORS = 0" when I get a
    connection from the pool. I have not tested this one personally (read
    in a newsgroup that someone else did successfully) but it is supposed
    to reset the cursor cache that is causing the trouble.
    Any help will be greatly appreciated,
    Regards,
    Thierry.Hi. We don't make those queries either. I suspect they are internal to the
    oracle driver. One thing you can try is to set the size of the pool's
    statement cache to zero. Oracle will retain cursors for every statement we
    cache. The alternative is also to tell the DBMS to allow a given session
    more cursors.
    Joe

  • Maximum open cursors exceeded - after update to 1.1.1.25

    While browsing around a database I keep getting "Maximum open cursors exceeded". The only cure is to disconnect and reconnect. This doesn't happen in the prior version (1.0.0.15).

    Dear Product Development
    I posted a thread about this and a previous version but I am now getting it more and more often in the new version.
    When it happens I get a JAVA log window popping up with the following information in it.
    Level X
    Sequence     130
    Elapsed     0
    Source oracle.dbdev.oviewer.table.DataEditor
    Message      _getTableData
    Is this any help to the product development team in diagnosing the issue.
    Cheers
    Chris

  • Maximum open cursors exceeded when inserting to a remote db

    I receive the error:
    ORA-01000: maximum open cursors exceeded
    ORA-02063: preceding line
    from ONTARIO
    (where ONTARIO is my remote db) when I am performing inserts from a pl/sql procedure to the remote db. I am performing two inserts from inside pl/sql and then issuing an explicit commit. I checked the open_cursors init param on both the local db and remote db and it was set to 300. I bumped up the remote db init param to 600. I was able to perform more inserts but still received this error.
    I thought implicit cursors close themselves, especially after a commit. Do I need to do something special to close the cursors on the remote machine?
    Thanks for your time...

    Check which process is making all the cursors on which database. If it is your procedure, try explicitly closing the cursors. I think the cursors are only implicitely closed after the transaction is ended. If you loop and open a cursor within the loop, that might be the problem.
    I also had this problem with Java working over a JDBC connection some time ago on a 815 database. If I recall correctly, that was caused by the JDBC driver and fixed by replacing it with a JDBC driver of 9i.
    The following script is what I used previously in a program that can draw a graph from the results. It is ugly, but does the job.
    Hope this helps,
    L.
    select
      'max cursors',
      to_number(value)
    from
      v$parameter
    where
      name = 'open_cursors'
    union
    select
      substr(lower(username),1,10)||'('||substr(to_char(ses.sid)||','
      ||to_char(serial#),1,9)||')',
      s.value
    from
      v$sesstat s,
      v$statname n,
      v$session ses
    where
    s.statistic#=n.statistic#
    and ses.sid=s.sid
    and n.name like '%cursor%'
    and n.name like '%current%'
    and not (ses.sid between 1 and 6)

  • Oracle - maximum open cursors exceeded

    Hi! I'm constatly getting the error I pasted below, when this line is executed:
    PreparedStatement stmt = connection.prepareStatement(sqlStatement);
    'connection' is of course an instance of oracle.jdbc.driver.OracleConnection, and 'sqlStatement' is a normal INSERT statement.
    Now, why I'm getting an error that involves cursos if the statement is an insert? One more thing, this error is happening in some enviroments so I think it could be an orcacle server problem (like installation or configuration problem), or it could be the driver, or... I dont know :)
    Well, I hope anyone can give me a tipo about this... Thanks in advance.
    Dario
    ORA-01000: maximum open cursors exceeded
    java.sql.SQLException: ORA-01000: maximum open cursors exceeded
    at oracle.jdbc.dbaccess.DBError.throwSqlExceptionDBError.java:180)
    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:472)
    at oracle.jdbc.driver.OracleStatement.<init>OracleStatement.java:499)
    at oracle.jdbc.driver.OracleStatement.<init>OracleStatement.java:518)
    at oracle.jdbc.driver.OraclePreparedStatement.<init>OraclePreparedStatement.java:210)
    at oracle.jdbc.driver.OraclePreparedStatement.<init>OraclePreparedStatement.java:193)
    at oracle.jdbc.driver.OracleConnection.privatePrepareStatementOracleConnection.java:869)
    at oracle.jdbc.driver.OracleConnection.prepareStatementOracleConnection.java:704)
    ------------------------------------------

    Thanks a lot for all the answers...
    After some tests a made, I found out that in the enviroment I developed the application, the value of the parameter OPEN_CURSORS is 300. I don't know yet which is the value in the test enviroment (where the errors are happening) but I'm pretty sure it is smaller, since I could force the same error in the development enviroment increasing the concurrency of the application (ie, I force the application too many create prepare statements, even much more than the real values the application should accept).
    Well, I have to thank you all again...
    Dario

  • Maximum open cursors exceeded prblm , code attached for review

    I am getting the following exception in my code
    java.sql.SQLException: ORA-01000: maximum open cursors exceeded
    My code is as follows
         public ResultSet getFiles() throws Exception
              ResultSet rs = null;
              PreparedStatement pst = null;
              String fileqry = "select * from FILES_SENT where FILESTATUS= 'TOBS' ";
              pst = connection.prepareStatement(fileqry);
              try
                   rs = pst.executeQuery();
              catch(Exception e)
                   System.out.println("In getFiles" + e );
                   System.exit(0);
              return rs;          
         public void RUN()
              while(true)
                   try
                        System.out.println("opening cursor "  );
                        FileResultSet = getFiles(); // polling the DB for new messages
                        if (FileResultSet!= null && FileResultSet.next()) // if new files are found
                             do // for each of the records
                                  String Filename = FileResultSet.getString("FILENAME");
                                  System.out.println("Processing the file " + Filename);
                                  // getting the messagetype from the filename
                                  String MessageType= Filename.substring(0,1);
                                  String InternalMessageID = getInternalMessageID(MessageType);
                                  System.out.println("internalmessageid of the file " + InternalMessageID);
                             while (FileResultSet.next());
                             System.out.println("Processed all messages");
                        else
                             System.out.println("closing cursor "  );
                             FileResultSet.close();
                        Thread.sleep(10);
                   catch(Exception f)
                        System.out.println("exception in RUN " + f);
                        System.exit(0);     
         }The database is oracle 10g
    The loop is going for 300 times with out any data and then comes down with this exception.
    Experts please give your valuable help in this.
    Dinesh

    I had previously tried to close the statement
    immediately after the exceute statement , but the
    resultset is lost after that .
    So where shoud i close the statement ?Don't keep ResultSets around! See this whole thread:
    http://forum.java.sun.com/thread.jspa?threadID=788017
    You should:
    1. Open connection
    2.Open statement
    3.Get ResultSet
    4.Convert ResultSet into something better
    5. close ResultSet
    6.close statement
    7.close connection
    8. return the "something better you converted the ResultSet into"
    Of course 5,6,7 should be coded in a way they ALWAYS get executed regardless of any exception may occur (for example in finally block).
    1 to 8 may also be replaced by (unless your purpose is only to learn JDBC basics):
    1. use some kind of high level framework/library/standard (Hibernate,Ibatis,JPA if you use Java 1.5+... you name it, there are as much as you may need, or maybe even a few more!)
    Hope this helps,
    Riccardo

  • ORA-01000 maximum open cursors exceeded with XA driver

    We are getting ORA-01000 maximum open cursors exceeded error from Oracle database
    agian and again.We are usimg XA driver.
    What is the weblogic's work around to handle this error?How we can handle this?We
    tried doing "grant select on DBA_PENDING_TRANSACTIONS to public ;" ,this also
    works for some time only.Again the same error starts coming.
    Help please.
    Thanx in advance.

    Thanks for your reply.
    I have increased my cursor size to 2000(default 300).We are using weblogic6.1
    and Oracle9i.Yes I was little aware about this bug so I tried doing "grant select
    on DBA_PENDING_TRANSACTIONS to public " from sys and no of open cursors reduced
    drastically but aftter some time increased again.We are using combination of thin,XA,non
    XA and oci drivers.
    We are using weblogic security framework also in our application and I think that
    consumes maximum no. of cursors.
    Kindly advice.
    Thanx a lot.
    Pinky
    Mitesh Patel <[email protected]> wrote:
    What is the size of cusror set in your oracle init.ora file?
    What version of oracle thin driver and weblogic are you using?
    Please read the following note:
    There is a bug with Oracle 817 driver's XAResource.recover implementation:
    it
    ignores the flag and always return all in-doubt Xids. After initially
    calling a resource's recover with TMSTARTRSCAN, TM subsequently calls
    the
    resource's recover with TMNOFLAGS until no more Xid is returned. Thus,
    Oracle driver's XAResource.recover is called infinitely until eventually
    it
    returns XAER_RMERR. Subsequent XAResource.start then returns ORA-01000
    exception (looks like all their XAResource methods internally uses prepared
    statements to execute some stored procedure.)
    Is this the case wth you?
    Mitesh
    Pinky Arora wrote:
    We are getting ORA-01000 maximum open cursors exceeded error from Oracledatabase
    agian and again.We are usimg XA driver.
    What is the weblogic's work around to handle this error?How we canhandle this?We
    tried doing "grant select on DBA_PENDING_TRANSACTIONS to public ;",this also
    works for some time only.Again the same error starts coming.
    Help please.
    Thanx in advance.

  • Getting error ora-01000 maximum open cursors exceeded

    hello,
    i am building my fist application using eclipse3.3 hibernate 3.2(hybernatesynchronizer as plugin)
    i have a oracle9i like sgbd . when i trying to create my mapping file from eclipse i got this error :
    ORA-01000: maximum open cursors exceeded
    i try to increase the number of cursor from the oracleconfiguration file init.ora, i shutdown but the problem still
    i don t know how to solve this problem really.
    i need help.

    Yes, that it what I was asking about.Not that it matters, but I think you misunderstood. I meant "if you ask it to leak resources then it will do so." I wasn't asking what you meant.
    Is there a way to make it explicitly open and close via a single call? Perhaps a configuration option either globably or by method/class?Not as a standard part of Hibernate, no. That said, it's relatively hard to leak anything other than connection objects unless you're really trying hard. There are libraries that you can use to manage the lifetime of the connection (actually the session) object. I like the Spring DAO support classes. Inevitably they cause their own problems for someone who doesn't understand what Hibernate's up to under the covers though.
    Edit: Quick example
    // Bog standard Hibernate
    Session session = sessionFactory.openSession();
    try {
       return (List<Foo>)session.createQuery("from Foo").list();
    } finally {
       session.close(); // If omitted will leak a connection object
    // Using Spring
    return (List<Foo>)getHibernateTemplate().find("from Foo");Things get slightly more interesting if you're using lazy loading and actively want to keep the connection around for longer.

  • Help!! ORA-01000: maximum open cursors exceeded

    Dear All,
    Here is my software information:
    Platform: WLP7.0sp2
    OS : solaris8
    And I have two connection Pools, their settings are:
    Initial Capacity: 10
    Maximum Capacity: 10
    Capacity Increment: 1
    Login Delay Seconds: 0 seconds
    Refresh Period: 0 minutes
    Shrink Period: 15 minutes
    Prepared Statement Cache Size: 5
    When I start my Weblogic Portal server, it happened the following exceptions:
    java.sql.SQLException: ORA-01000: maximum open cursors exceeded
    ORA-06512: at "SYS.STANDARD", line 1014
    ORA-06512: at "TU_PORTLET_P13N", line 2
    ORA-04088: error during execution of trigger 'TU_PORTLET_P13N'
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:822)
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:1602)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1527)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2045)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:39
    5)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:446)
    at weblogic.jdbc.pool.Statement.execute(Statement.java:274)
    at weblogic.jdbc.rmi.internal.PreparedStatementImpl.execute(PreparedStatementImpl.java:378)
    at weblogic.jdbc.rmi.SerialPreparedStatement.execute(SerialPreparedStatement.java:401)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceHelper.addOrUpdate
    PageP13nPortlets(JdbcPortalPersistenceHelper.java:785)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceHelper.addOrUpdate
    PortalP13nPages(JdbcPortalPersistenceHelper.java:508)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceManager.addOrUpdat
    ePortalPersonalization(JdbcPortalPersistenceManager.java:414)
    at com.bea.portal.manager.internal.persistence.MainPersistenceManager.addOrUpdatePortalPers
    onalization(MainPersistenceManager.java:104)
    at com.bea.portal.manager.internal.PortalPersistenceManager.updatePortalModel(PortalPersist
    enceManager.java:330)
    at com.bea.portal.manager.internal.PortalPersistenceManager.createDataItem(PortalPersistenc
    eManager.java:199)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.handleDataItemMe
    ssage(AbstractDataRepository.java:814)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onDataSyncMessag
    e(AbstractDataRepository.java:990)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:252)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onSyncRequestRes
    ultMessage(AbstractDataRepository.java:1185)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:261)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onSyncRequestMes
    sage(AbstractDataRepository.java:1086)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:257)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.notifyDataReposi
    tory(AbstractDataRepository.java:706)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onRefreshMessage
    (AbstractDataRepository.java:912)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:247)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.sendRefreshMessa
    geToThis(AbstractDataRepository.java:341)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.addNotifiedDataR
    epository(AbstractDataRepository.java:324)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.addNotifiedDataR
    epository(AbstractDataRepository.java:304)
    at com.bea.portal.manager.internal.DeploymentManager.initializePortal(DeploymentManager.jav
    a:142)
    at com.bea.portal.manager.internal.DeploymentManager.initialize(DeploymentManager.java:101)
    at com.bea.portal.manager.internal.PortalManagerDelegateImpl.<init>(PortalManagerDelegateIm
    pl.java:86)
    at com.bea.portal.manager.PortalFactory.createPortalManagerDelegate(PortalFactory.java:248)
    at com.bea.portal.manager.ejb.internal.PortalManagerBean.ejbCreate(PortalManagerBean.java:1
    47)
    Any ideas will be appreciated.
    Robert

    Robert Chao wrote:
    Dear All,
    Here is my software information:
    Platform: WLP7.0sp2
    OS : solaris8
    And I have two connection Pools, their settings are:
    Initial Capacity: 10
    Maximum Capacity: 10
    Capacity Increment: 1
    Login Delay Seconds: 0 seconds
    Refresh Period: 0 minutes
    Shrink Period: 15 minutes
    Prepared Statement Cache Size: 5Hi. You should either configure your DBMS to allow more open cursors per connection,
    or you can try setting the prepared statement cache size to zero.
    Joe
    >
    When I start my Weblogic Portal server, it happened the following exceptions:
    java.sql.SQLException: ORA-01000: maximum open cursors exceeded
    ORA-06512: at "SYS.STANDARD", line 1014
    ORA-06512: at "TU_PORTLET_P13N", line 2
    ORA-04088: error during execution of trigger 'TU_PORTLET_P13N'
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:169)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:822)
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:1602)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1527)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2045)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:39
    5)
    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:446)
    at weblogic.jdbc.pool.Statement.execute(Statement.java:274)
    at weblogic.jdbc.rmi.internal.PreparedStatementImpl.execute(PreparedStatementImpl.java:378)
    at weblogic.jdbc.rmi.SerialPreparedStatement.execute(SerialPreparedStatement.java:401)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceHelper.addOrUpdate
    PageP13nPortlets(JdbcPortalPersistenceHelper.java:785)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceHelper.addOrUpdate
    PortalP13nPages(JdbcPortalPersistenceHelper.java:508)
    at com.bea.portal.manager.internal.persistence.jdbc.JdbcPortalPersistenceManager.addOrUpdat
    ePortalPersonalization(JdbcPortalPersistenceManager.java:414)
    at com.bea.portal.manager.internal.persistence.MainPersistenceManager.addOrUpdatePortalPers
    onalization(MainPersistenceManager.java:104)
    at com.bea.portal.manager.internal.PortalPersistenceManager.updatePortalModel(PortalPersist
    enceManager.java:330)
    at com.bea.portal.manager.internal.PortalPersistenceManager.createDataItem(PortalPersistenc
    eManager.java:199)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.handleDataItemMe
    ssage(AbstractDataRepository.java:814)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onDataSyncMessag
    e(AbstractDataRepository.java:990)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:252)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onSyncRequestRes
    ultMessage(AbstractDataRepository.java:1185)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:261)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onSyncRequestMes
    sage(AbstractDataRepository.java:1086)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:257)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.notifyDataReposi
    tory(AbstractDataRepository.java:706)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.onRefreshMessage
    (AbstractDataRepository.java:912)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.executeMessage(A
    bstractDataRepository.java:247)
    at com.bea.p13n.management.data.message.internal.JvmCommunicationPipe.sendMessage(JvmCommun
    icationPipe.java:116)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.sendRefreshMessa
    geToThis(AbstractDataRepository.java:341)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.addNotifiedDataR
    epository(AbstractDataRepository.java:324)
    at com.bea.p13n.management.data.repository.internal.AbstractDataRepository.addNotifiedDataR
    epository(AbstractDataRepository.java:304)
    at com.bea.portal.manager.internal.DeploymentManager.initializePortal(DeploymentManager.jav
    a:142)
    at com.bea.portal.manager.internal.DeploymentManager.initialize(DeploymentManager.java:101)
    at com.bea.portal.manager.internal.PortalManagerDelegateImpl.<init>(PortalManagerDelegateIm
    pl.java:86)
    at com.bea.portal.manager.PortalFactory.createPortalManagerDelegate(PortalFactory.java:248)
    at com.bea.portal.manager.ejb.internal.PortalManagerBean.ejbCreate(PortalManagerBean.java:1
    47)
    Any ideas will be appreciated.
    Robert

  • Sql exception : maximum open cursors exceeded

    I run applicatio to insert data into the table, and update data into the table, when it processes more than 800 record, it throws the sql exception :maximum open cursors exceeded.
    Who knows the reason?
    Thanks.

    I have a similar problem where in I close the Result set, Statement and close the connection in a finally block. Even though, the connection.close() executes sucessfully, with no exceptions being thrown, I still see the connection opened in ORacle. This builds up connections for our application and by the end of the day we are up with about 500 connections open and rising.
    After closing the connection, I did check the value for connection.isClosed() and it still says false (like before the connection was closed). Since we are using a custom Connection manager to pool the connections, my interpretation is that even after the connection is closed, it doesn't get released. I have tried setting the connection to Null, used the finalize method to still check for connection != null and do one more close(), but still the connection is still open.
    Am I mistaken in my thinking that even though the connection seems to be closed(), it doesn't get released until the GC runs and picks it for disposal? For every job, after the process is completed we have about 7 open connections and at times the number stays at 7 for some more jobs (Web application driven by servlets and some rmi in the background process). I thne see a surge in the connection after some more jobs are processed and so am not sure whether its the connection manager to blame. Could any one have any pointers on this issue.
    Thanks for your response.

  • Maximum open cursors exceeded!!!

    Hi All,
    While executing a procedure am getting this error:
    Error: ORA-00604: error occurred at recursive SQL level 1
    ORA-01000: maximum open cursors exceeded
    Could you please guide me how to get rid of this kind of error and how to close all open cursors together.
    Thanks in Advance
    AP

    am running a procedure on sqldeveloper and i think statement which is causing problem is:
    RLD is cursor
    in the procedure am checking
    open rld;
    if RLD%found then
    begin
    end;
    end if;
    close rld;
    if i comment IF CONDITION then procedure works fine..

  • Maximum open cursors exceeded with Sybase TG

    Hi,
    Does anyone knows if we can use the HS_OPEN_CURSORS with Oracle transparent gateway for Sybase ?
    I've got the error message :
    ORA-01000: maximum open cursors exceeded
    Thanks

    This depends if the maximum number of cursors exceeded in the GTW or within the db.
    In my eyes the OPEN_CURSORS of the db is normally the limiting factor.
    HS_OPEN_CURSORS defines the maximum number of cursors that can be open on one connection to a non-Oracle system instance.
    The value never exceeds the number of open cursors in the Oracle database server. Therefore, setting the same value as the OPEN_CURSORS initialization parameter in the Oracle database server is recommended.
    So better check out the OPEN_CURSORS of the db and increase them.

  • Maximum Open Cursors Exceeded problem in XSQL

    Hi,
    We are processing an XSQL page by calling XSQLRequest.process() programatically within our application. Within the XSQL page there are several queries which involve multiple nested CURSOR expressions... when the query returns enough rows we are running into the error "ORA-00604: error occurred at recursive SQL level 1 ORA-01000: maximum open cursors exceeded".
    When searching this forum I have seen many (old) postings regarding this error and a bug in the XDK... seems like it was some time ago, but while we set about improving the structure of our XSQL page (or increasing the max open cursor init parameter currently at 500 or both) can anyone confirm that this bug no longer exists?
    Also, any general suggestions on working around this limit rather than increasing it? We have considered splitting up our queries into smaller queries (and merging the results via XSLT) and closing cursors during the session explicitly by issuing commits within the XSQL page... but any better ideas?
    Thanks,
    Bob

    I have found this max open cursors problem to be related to Statement object not being closed. This presents a problem for the use of PreparedStatements, because they are only useful if you can keep them open and resuse them. However, in doing so, each iteration through the PreparedStatement creates another open cursor in the databse rather than reusing the previous one. A work around I discovered by reading about REF CURSORS and I use in JDBC is as follows:
    Assuming a previously prepared PreparedStatement pstmt and a ResultSet rset-
    while (rset.next()) {
    rset.close();
    // This line closes the cursor in the database
    // but does not require you to re-prepare the
    // PreparedStatement. Don't ask me why--ask the
    // Oracle API guys.
    rset.getStatement().close();
    // make ready for GC
    rset = null;

  • SQLException: maximum open cursors exceeded

    hi all,
    i get the following exception when executing my program.
    14:36:02,111 ERROR [STDERR] java.sql.SQLException: ORA-01000: maximum open cursors exceeded
    14:36:02,111 ERROR [STDERR]     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    14:36:02,111 ERROR [STDERR]     at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
    14:36:02,111 ERROR [STDERR]     at oracle.jdbc.ttc7.Oopen.receive(Oopen.java:120)
    14:36:02,111 ERROR [STDERR]     at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:586)
    14:36:02,127 ERROR [STDERR]     at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:385)
    14:36:02,127 ERROR [STDERR]     at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConnection.java:772)
    14:36:02,127 ERROR [STDERR]     at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection.java:712)
    14:36:02,127 ERROR [STDERR]     at org.jboss.resource.adapter.jdbc.WrappedConnection.createStatement(WrappedConnection.java:145)
    14:36:02,127 ERROR [STDERR]     at abcd.updateMethod(abcd.java:1605)
    14:36:02,127 ERROR [STDERR]     at servlet.abcdServlet.doPost(abcdServlet.java:62)
    14:36:02,127 ERROR [STDERR]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    14:36:02,127 ERROR [STDERR]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    14:36:02,143 ERROR [STDERR]     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    14:36:02,143 ERROR [STDERR]     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
    14:36:02,143 ERROR [STDERR]     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    14:36:02,143 ERROR [STDERR]     at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    14:36:02,143 ERROR [STDERR]     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    14:36:02,143 ERROR [STDERR]     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    14:36:02,143 ERROR [STDERR]     at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    14:36:02,143 ERROR [STDERR]     at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    14:36:02,143 ERROR [STDERR]     at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)the code is like this
    while (result.next())
                           String sql = "update query";
                           Statement = null;
                   st = con.createStatement(); // line No. 1605
                   st.executeUpdate(sql);
                   st.close();
    }anyone had such experience? please post your valuable suggestions.

    You have better to select your data (select connection) and store them in an arraylist for example, then close the 'select connection' and finally
    loop through the arraylist and make as much update as the list size.I disagree. Huge amounts of data could be being pulled from the database (that is one of their strength) and if the data can be processed one row at a time there is no reason to load it all into memory.
    => take a look [here |http://java.sun.com/docs/books/tutorial/jdbc/TOC.html]
    and [here |http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html] for preparedstatements
    Ditto to PreparedStatement
    OP. Is it possible that the Statement being returned (from what looks like JBoss) has the close method overwritten and does not actually return the resource (some type of pooling)?

  • Maximum Open Cursors Exceeded - Oracle 9 & Java Web Server 6.1

    We are facing this problem - maximum open cursors exceeded after migrating our application to Sun Java System Web Server 6.1
    We were not facing this problem with our earlier web server
    Can anybody let us know - is there any setting we need to do to avoid this.
    The current setting for this attribute in the database is quite huge - close to 2000
    One of the "webservd" sessions, (web server user) exceeded this value

    See my reply in your duplicated post:
    http://swforum.sun.com/jive/thread.jspa?threadID=57989&messageID=220483#220483

Maybe you are looking for

  • Workspace Error 500 on 9.3.1

    Hello, I am trying to configure our test environment and everything went fine with the installation and configuration except for workspace and i get the following Error 500 when i use the url http://machinename:19000/workspace/index.html Error 500--I

  • Lion Mail - RSS author is now blod instead of subject

    Hi all, I can't believe if Apple has forogt about this to be honest... But maybe it's just me missing somehting. In the new Mail, the RSS messages are listed as before (by date, subject, etc.) but now the first text in bold is the author and NOT the

  • Batch creation issue

    Hi Gurus, I am getting the following error "No classification is possible for the object data" when i try to create batch in EWM. I have done required configurations and CIFed product, class, characteristics and organizational area at a time. Please

  • QBE filtering using "OR" conjunction

    I would like to allow filtering on my table but set the criteria so that one or more specific rows always show up in the search regardless of the criteria entered in the table search headers. Any idea how to accomplish this? It seems that the Filter

  • Enable a disabled user on the native oracle resource

    I have to enable a disabled account on the native resource from a form. Field name='view.accounts[$(Resource)].enable' doesnot work whereas Field name='view.accounts[$(Resource)].disable' works properly. I have a custom adapter which has the required