在java调用oracle数据时出现ora-04031 错误,

解决方案 »

  1.   

    share pool不足了。查查数据库share pool设置的多大,有多少个并发连接。
      

  2.   

    好象不一定哦,share pool 我这里设置的已经很大了,而且我换种语言,同样的脚本就没有哪个错误了,并发连接也好象不是,java每次执行一定抱这个错,在sqlplus中,或者别的语言都不会出现.
      

  3.   

    能否说的具体些,是java程序在调用什么语句时报错,调用前有数据库操作吗?在报错时如果不关闭数据库连接,在别的机器上连接DB出错吗?如果不出错,查询v$sgastat,看看shared pool的统计情况,shared pool free memory有多少。
      

  4.   

    java池总共有200m,空闲195m,使用的只有5m,large pool 空闲怎么有4g,share pool空闲17m,
    在oracle管理器上看到的我给的所有内存也就是1.1g
      

  5.   

    我还想说下, java调用时,不是所有的sql语句都会出错,而是只有其中的一条sql语句会出错,
    而这条sql语句在c#中是不会出错的。
      

  6.   

    如果只是java调用sql,而不是执行java写的存储过程,与java池没关系。看shared pool。
      

  7.   

    那个SQL很复杂吗?能否测试在java中连接DB后只行那个sql,看是否也出错呢?
      

  8.   

    JAVA是通过thin JDBC连接的DB还是通过OCI
      

  9.   

    sql语句是有点复杂,java是通过jdbc调用的,java连接db后,在PLSQL Developer调用是不会出错的
      

  10.   

    我在想问题 有没有可能出在java中,而不在数据库里
      

  11.   

    java端的问题可能性小些,因为毕竟是报的ora-XXXX的错误,这个是DB报的。是否会与oracle的BUG有关呢?在网上看到文章说,有些4031错误是oracle的BUG引起的。
    JDBC驱动是什么版本,DB又是什么版本呢?
      

  12.   

    哦,谢谢了, oracle是 9.0.1.0.1
      

  13.   

    你说奇怪的意思是不是跟oracle版本没有关系? 
    而是还不知道的其他原因,哎,我对java不是很了解,我做数据库管理,对c#还是了解点,自己用c#写了个东东,来测试哪个sql语句.没有问题。java实在是有点糊涂
      

  14.   

    有没有人对oracle,和java都比较熟悉的呀,等等看,