java.sql.SQLException : ORA-00942: table or view does not exist, 每三次命中数据库一次

标签 java database oracle exception oracle11g

我正在一个java项目中工作,我们使用oracle作为数据库,我们有两个模式,对于每个模式,我们在连接池中创建saprate连接。

如果我们一次从客户端发出最多 2 个请求来获取表中的数据,那么它工作正常,但每三次都会收到 java.sql.SQLException: ORA-00942: 表或 View 不存在 异常。

我想了解为什么会发生这种情况以及可能的原因是什么?请帮助我。

完整堆栈跟踪:

java.sql.SQLException: ORA-00942: table or view does not exist
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:742)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:212)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:795)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1030)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:835)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1123)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3284)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3328)
    at DLRecordSetSQL.DLRecordSetSQL.setRecordCount(DLRecordSetSQL.java:3622)
    at DLRecordSetSQL.DLRecordSetSQL.open(DLRecordSetSQL.java:3124)
    at DLRecordSetSQL.DLRecordSetSQL.open(DLRecordSetSQL.java:3207)
    at com.utility.queryManager.util.MetadataManager.init(MetadataManager.java:79)
    at com.utility.queryManager.util.MetadataManager.<init>(MetadataManager.java:65)
    at com.utility.queryManager.processor.UtilityManagerRequestProcessor.selectCommandRequestProcessor(UtilityManagerRequestProcessor.java:187)
    at com.utility.queryManager.processor.UtilityManagerRequestProcessor.UtilityRequestProcessor(UtilityManagerRequestProcessor.java:77)
    at com.utility.queryManager.servlet.UtilityManagerServlet.doPost(UtilityManagerServlet.java:36)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

最佳答案

我认为您的数据库已耗尽可用连接。

您可以将初始池大小设置为 5,因为它默认为 0。

更多内容,您可以阅读本教程:Setting Connection Pool Properties in Oracle

Avi stated问题如下

Oracle database connections are not multi-threaded. If two or more threads simultaneously try to access the same connection, one of them will block until the other one finishes interacting with the connection.

So I guess you should try to verify whether your code exhibits this behaviour trying to access the same database connection from multiple threads at the same time.

关于java.sql.SQLException : ORA-00942: table or view does not exist, 每三次命中数据库一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38910801/

相关文章:

Java正则表达式匹配两个连续的辅音

java - 如何为多个不同的无名 JButton 设置 ActionListener。当他们都有相同的名字或没有名字时,如何能够独立对待他们?

python - 如何使用 Python 合并 CSV 字符串中的字段?

python - 使用 python cx_oracle 将数据导入到 oracle

database - 如何为不同的 oracle 产品放置多个 oracle_home

java - AlertDialog 给出 "undefined"错误

java - Android Studio : How to compile with customized class but still use module dependency

sql - 检查后从表中返回值的 PL/SQL 函数

java - Q : I can't start Database connection in Eclipse

oracle - xml选择查询oracle