Could you try  the latest SNAPSHOT - I'm hoping this could be fixed by 
https://issues.apache.org/activemq/browse/AMQ-1702

cheers,

Rob

http://open.iona.com/ -Enterprise Open Integration
http://rajdavies.blogspot.com/


On 5 May 2008, at 03:58, Hatta wrote:


Hi again,

To the respected ActiveMQ Team, appreciate your kind response on this matter
as I have performed the action based on the following advise given by
Oracle.

The result was the lock did not occurred for some time. But after 5 to 6
hours, the message is getting displayed again.

The message is the same as the previous posting.

I sincerely appreciate that the ActiveMQ team would look into this matter.

Regards
Hatta




Hatta wrote:

Hi again,

Below is the response from Oracle Meta-link regarding the issue with
maximum open cursors exceeded:

WORKAROUNDS FOR ORA-01000

Solution Description:
=====================

There are two ways to workaround this ORA-01000 error. You can tune cursor
usage at the database level and at the application level.

1. Tuning at the DATABASE LEVEL

There is a parameter you can set in the init.ora that determines the
number of
cursors a user can open in a session: OPEN_CURSORS.

OPEN_CURSORS by default is 50 and usually, this is not high enough. The
highest
value you can set this parameter to is operating system dependant. For
more
information, please refer to Oracle7 Server Administrator's Guide,
Appendix A.

To solve the ORA-01000 error, set the OPEN_CURSORS to a higher number
(such as
255). You may need to set it to the maximum of the operating system limit.

Consequences to changing this parameter:

This parameter does not effect performance in any way but Oracle will now
need
a little more memory to store the cursors.


2. Tuning at the APPLICATION LEVEL

There are three parameters that affect handling cursors at the application level: RELEASE_CURSOR, HOLD_CURSOR, MAXOPENCURSORS. You should set these
parameters at the precompiler level.

HOLD_CURSOR by default is NO. This means that after Oracle executes a SQL
statement the links to the cursor cache, memory, and parse locks are
released
and marked for reuse. For more details refer to Programmer's Guide to
Precompilers Version 1.6 p.6-16.

RELEASE_CURSOR by default is NO. This means that after Oracle executes a
SQL
statement, the links to the cursor cache is maintained and not released.
For
more information, refer to Programmer's Guide to Precompilers Version 1.6
p.6-26.

These two parameters must be used in conjunction for them to be effective. Here is a table that shows how settings of the two parameters interact.

        ----------------------------------------------------
        |HOLD_CURSOR | RELEASE_CURSOR | LINKS ARE...       |
        ----------------------------------------------------
        | NO         | not applicable | marked as reusable |
        | YES        | NO             | maintained         |
        | NO         | YES            | removed immediately|
        | n/a        | YES            | removed immediately|
        ----------------------------------------------------    

To resolve the ORA-01000 error, you should set HOLD_CURSOR=NO and
RELEASE_CURSOR=YES. This way, after the cursors are used, Oracle will free
up
the memory for other cursors.

Consequences of setting these parameters HOLD_CURSOR=NO and
RELEASE_CURSOR=YES:

This will cause Oracle to release the links and locks for each cursor
after the
SQL statement is executed. This means that the next time Oracle needs to
issue
the same SQL statement, Oracle will have to reparse the statement, and
rebuild
the execution plan. This will cause some performance overhead.

MAXOPENCURSORS by default is 10. This number indicates the concurrent
number
of open cursors that the precompiler tries to keep cached. It specifies
the
initial size of the cursor cache. The limit of this parameter is
determined by
what you set OPEN_CURSORS to. Here is the formula:

        MAXOPENCURSORS + 6 <= OPEN_CURSORS
                6 is the overhead cursors Oracle needs.

Here is a calculation of the maximum number of cursors in use:
        SQL statement cursors
        PL/SQL parent cursors
        PL/SQL child cursors
      +6 cursors for overhead
        -----------------------
        sum of cursors in use.

Appreciate a response from the ActiveMQ Team.

Regards
Hatta






Hatta wrote:

Hi again,

There are a few items which I would like to add on this topic as well,

1. I have referred to the Oracle Forums and the general statement given
was to ensure that the application client whom is accessing Oracle
Database to check their open cursor statement.

If there exist codes where the open cursor statements are not closed,
then it should be considered to correct that code.

From the Oracle point of view, is by increasing the open cursor parameter
in the database to a certain amount. This would definitely hide the
issue.

But the flaw of this approach is that if the issue occured again, then
what is the final solution?

Appreciate the ActiveMQ technical team to respond to this matter.

Thanks in advance

Hatta






Hatta wrote:

Hi,

I m using ActiveMQ 5.1 SNAPSHOT version. I have already experienced the
same problem in ActiveMQ 5.0.0 Production release.

ActiveMQ 5.1 has been installed on a Linux OS : kernel version 2.6 and its currently connecting to an Oracle 10 RAC (Real Application Cluster).

After a few hours of observation and no activity between my application
and ActiveMQ 5.1, the following was noticed:

ERROR DefaultDatabaseLocker - Failed to update database lock:
java.sql.SQLException: ORA-01000: maximum open cursors exceeded



java.sql.SQLException: ORA-01000: maximum open cursors exceeded



       at
oracle .jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java: 112)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)

       at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)

       at
oracle .jdbc .driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)

       at
oracle .jdbc .driver .T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:952)

       at
oracle .jdbc .driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java: 1160)

       at
oracle .jdbc .driver .OraclePreparedStatement .executeInternal(OraclePreparedStatement.java:3285)

       at
oracle .jdbc .driver .OraclePreparedStatement .executeUpdate(OraclePreparedStatement.java:3368)

       at
org .apache .commons .dbcp .DelegatingPreparedStatement .executeUpdate(DelegatingPreparedStatement.java:94)

       at
org .apache .activemq .store .jdbc.DefaultDatabaseLocker.keepAlive(DefaultDatabaseLocker.java: 103)

       at
org .apache .activemq .store .jdbc .JDBCPersistenceAdapter .databaseLockKeepAlive(JDBCPersistenceAdapter.java:458)

       at
org.apache.activemq.store.jdbc.JDBCPersistenceAdapter $3.run(JDBCPersistenceAdapter.java:260)

       at
java.util.concurrent.Executors $RunnableAdapter.call(Executors.java:417)

       at
java.util.concurrent.FutureTask $Sync.innerRunAndReset(FutureTask.java:280)

       at
java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)

       at
java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java: 65)

       at
java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java: 142)

       at
java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:166)

       at
java.util.concurrent.ThreadPoolExecutor $Worker.runTask(ThreadPoolExecutor.java:650)

       at
java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:675)

       at java.lang.Thread.run(Thread.java:595)


However, My application is still able to send and receive jms messages
from the broker. But this error message is disturbing
and may give an impression that there something wrong with the server
communication with the DB.

Appreciate a response to this matter.

Regards
Hatta








--
View this message in context: 
http://www.nabble.com/maximum-open-cursors-exceeded-tp16834950s2354p17053893.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Reply via email to