jdbc连oracle9i的时候报错,connection是可以建立的,不过在执行sql语句的时候就出现ORA-00942:table or view does not exist,表是肯定存在的,在客户端和服务器段用PLSQL Developer都可以查到,并且sql语句也是可以执行,但是在程序里面连的时候就会出现上述的错误。
我写的是一个监控程序,程序采用的是JMX架构,其中监控了20个左右的数据库,版本从8i到9i都有,其他的数据库都是正常的,只有9206版的ORACLE出现了上述错误,JDBC包用的是9i的包。程序运行环境为Linux,我在本机测试时程序都是可以连接数据库并正确取到数据的,本机系统为XP。
jdbc连接配置信息如下:
Driver = "oracle.jdbc.driver.OracleDriver";
URL= "jdbc:oracle:thin:@192.168.0.11:1521:test";
dbUsername = "test";
dbPassword = "test";详细报错信息如下:
Message: java.sql.SQLException: ORA-00942: table or view does not existat oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:304)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:625)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:112)
at oracle.jdbc.driver.T4CStatement.execute_for_describe(T4CStatement.java:351)
at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:893)
at oracle.jdbc.driver.T4CStatement.execute_maybe_describe(T4CStatement.java:383)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:983)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1123)SQL如下 :select a.total-b.total 会话空间 from
  (select to_number(value) total from v$parameter where name='sessions') a,
  (select count(*) total from v$session) b权限都已经授予请高手指教,谢谢!

解决方案 »

  1.   

    不知道是什么原因,但是有个办法可供参考:把原先SQL完成的事情放到一个fucntion里面实现,再写一个新的SQL调用这个function
      

  2.   

    谢谢楼上的,不过数据库不归我们管!!!
    另外,我在Linux服务器上用JAVA程序直连数据库是可以取到数据的!
      

  3.   

    了解你的情况!
    不过,我猜测是jdbc driver在执行某些SQL指令的时候可能有bug,所以,这种情况只能变通处理了。
      

  4.   

    jdbc driver估计也没问题,因为这个程序是应用JMX架构后台程序,用Agent程序管理SPI,出错的程序就是SPI采集程序里的,直接登录到目标主机上采集数据,目前只有9206版的数据库出现上述错误,我在同一个主机上采用JAVA程序直连数据库就正确的取到了数据。会不会与JMX架构有关,这个我不太懂!!