Error in Oracle (ORA-01089)

User 8688ffe688

28-10-2005 22:43:20

We are using JChem 3.1.1 Oracle cartridge and are experiencing the following error. The database does not actually shutdown.





Database Server: Sun E4500 running Oracle 9i


JChem Server: HP Xeon 3.6Ghz running Tomcat 5.5.9 JDK-1.5.0_02





Below is Oracle's Error:





*** 2005-10-28 09:38:22.906


*** SESSION ID:(48.434) 2005-10-28 09:38:22.894


java.lang.Exception: The following exception has been thrown by the servlet:


Exception: ORA-01089: immediate shutdown in progress - no operations are permitt


ed


at chemaxon.jchem.cartridge.jcservcli.JcsClientBase.checkForException(JcsClien


tBase.java:162)


at chemaxon.jchem.cartridge.jcservcli.BlockingClient.callService(BlockingClien


t.java:179)


at chemaxon.jchem.cartridge.jcservcli.JcsClientBase.call(JcsClientBase.java:45


)


at chemaxon.jchem.cartridge.JFunctions.sendQueryForCached(JFunctions.java:1950


)


at chemaxon.jchem.cartridge.JFunctions.sendBatch(JFunctions.java:1782)


at chemaxon.jchem.cartridge.JFunctions.sendBatch(JFunctions.java:1854)


java.lang.RuntimeException: The following exception has been thrown by the servl


et:











*** 2005-10-28 13:55:01.736


ksedmp: internal or fatal error


ORA-07445: exception encountered: core dump [000000010285EB58] [SIGSEGV] [Addres


s not mapped to object] [0xC00000001] [] []


Current SQL statement for this session:


SELECT cis_id from cis_chemstruct where jc_equals(smiles,jc_molconvert(:b1,'smil


es:u')) = 1





Below is Tomcat's Error:





Creating FpMaker...


java.sql.SQLException: ORA-01089: immediate shutdown in progress - no operations are permitted





at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)


at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)


at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:582)


at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1983)


at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:1250)


at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2529)


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


at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:640)


at chemaxon.jchem.db.StructureCache.getCurrentUpdateCounter(StructureCache.java:902)


at chemaxon.jchem.db.StructureCache.isValid(StructureCache.java:879)


at chemaxon.jchem.db.StructureCache.loadIfNeeded(StructureCache.java:638)


at chemaxon.jchem.db.JChemSearch.loadCacheIfNeeded(JChemSearch.java:2276)


at chemaxon.jchem.db.JChemSearch.search1(JChemSearch.java:2034)


at chemaxon.jchem.db.JChemSearch.search(JChemSearch.java:1881)


at chemaxon.jchem.db.JChemSearch.setRunning(JChemSearch.java:1768)


at chemaxon.jchem.db.JChemSearch.run(JChemSearch.java:1788)


at chemaxon.jchem.cartridge.servlets.JChemCached.run(JChemCached.java:831)


at chemaxon.jchem.cartridge.servlets.JChemCached.doSearch(JChemCached.java:792)


at chemaxon.jchem.cartridge.servlets.JChemCached.doPerform(JChemCached.java:600)


at chemaxon.jchem.cartridge.servlets.JChemCached.process(JChemCached.java:137)


at chemaxon.jchem.cartridge.servlets.JChemServletBase.doPost(JChemServletBase.java:232)


at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)


at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)


at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)


at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)


at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)


at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)


at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)


at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)


at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)


at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:365)


at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)


at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)


at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)


at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)


at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)


at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)


at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)


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

ChemAxon aa7c50abf8

31-10-2005 09:14:27

Did you use SHUTDOWN IMMEDIATE to stop your database?





Were you expecting users to still execute searches during shutdown? (This is what apperantly happend.)





Did you try to stop Tomcat? Are you still unable to shutdown the database after Tomcat has been stopped? (I recommend to use a dedicated Tomcat installation for each JChem Cartridge installation.)

User 8688ffe688

31-10-2005 18:40:48

Did not issue a command to shutdown the database. We do not want the database to shutdown.





The message is not indicative of what actually happened. The application responded with the database error message but the database never shutdown.





We are using dedicated tomcat servers for each JChem cartridge installation.





We are confused why the message comes up and alarmed at the error message.

ChemAxon aa7c50abf8

01-11-2005 05:08:15

I am pretty clueless here. The only (but very unlikely) thing I can imagine is that the connection properties in Tomcat got inadvertently changed to point to an instance which was in the process of shutting down. Apart from this, the problem seems to be an Oracle bug: the Oracle JDBC driver was used in Tomcat to execute a SELECT statement and returned an error message inconsistent with the database state. It is possible that the culprit is the JDBC driver. I suggest therefore to upgrade the Oracle JDBC driver in Tomcat to the latest version compatible with your database version. (If you have Oracle 9.2 database, it is JDBC 10.2.0.x.) It can be downloaded from http://www.oracle.com/technology/tech/java/sqlj_jdbc/index.html .

ChemAxon aa7c50abf8

01-11-2005 08:10:43

The following variant of the "JDBC connection in Tomcat has been reconfigured" scenario is also possible. The JDBC connection in Tomcat may have pointed to database "A" at some time in the past. User "U" issued successful queries on database "A". Then the JDBC connection was reconfigured to point to database "B" without Tomcat being restarted. At this time JDBC connection(s) to database "A" may still have been around in the cache in Tomcat. It is possible then that such "stale" connections were/are reused, if user "U" executes queries after the JDBC reconfiguration.





In order to avoid this scenario, I recommend to restart Tomcat each time you reconfigure the JDBC connection.