程序执行添加操作的时候出现以下错误:ORA-00604:递归SQL级别3出现错误
ORA-04031:无法分配4096字节的共享内存("shared pool","select /*+ rule */bucket_cn...","Typecheck heap","kgghteInit")重新执行后又正常,是不是shared pool内存太少?
当前系统 win2003 1G内存 oracle 10g以前是没有出现这个错误的,自从更换了java程序的oracle驱动:原ojdbc14.jar 现classes12.jar
不知道是系统shared pool太少还是跟驱动有关,请教各位高手...

解决方案 »

  1.   

    跟shared_pool设置太小有关系。
    更改大些,就可以避免。
    如果使用了oracle的自动内存管理,则也需要修改"_shared_pool_size"参数更大。
      

  2.   

    运行:
    Select * from v$sgastat
    where pool ='shared pool' and upper(name) like '%FRE%'
    or  upper(name) like '%MISC%';
    把结果贴出来,
    看看你的
    shared pool miscellaneous 是不是不较大,而且一直上升不释放?是什么数据库版本?
      

  3.   

    这个问题在早期版本(oracle 8)里面会比较多遇到,现在好像都很少见了
      

  4.   


    我查询出来的结果是 
    pool          name              bytes
    shared pool   free memory       10711152
    shared pool   miscellaneous     17944740
      

  5.   

    我数据库版本是
    10.1.0.2.0
    miscellaneous 一直变大  不释放该如何处理呢
      

  6.   


    是呀,网上资料都说是oracle8以前的问题,我最近更换了java 连接oracle 驱动的版本,不知道有没有关系,以前是用ojdbc14.jar 现在classes12.jar 
      

  7.   

    算是oracle的一个bug,你增加share_pool_size也没用看你的shared pool  miscellaneous    17944740值过大。可以尝试在init<sid>.ora文件里面增加_db_handles_cached = 0然后重新启动instance
      

  8.   

    算是oracle的一个bug,你增加share_pool_size也没用看你的shared pool  miscellaneous    17944740值过大。可以尝试在init<sid>.ora文件里面增加_db_handles_cached = 0然后重新启动instance
      

  9.   

    算是oracle的一个bug,你增加share_pool_size也没用看你的shared pool  miscellaneous    17944740值过大。可以尝试在init<sid>.ora文件里面增加_db_handles_cached = 0然后重新启动instance
      

  10.   

    我刚才测试发现miscellaneous只增不会减
    pool          name              bytes 
    shared pool  free memory      5261146
    shared pool  miscellaneous    19163864要怎样设置让oracle自动回收shared pool
      

  11.   


    _db_handles_cached = 0 这句是什么意思,做用是什么