select pool,name,bytes/1048576 "Size in MB"
from v$sgastat
where name = 'free memory'
/
看看还有多大.也可能碎片过多
一般来说
1. SQL中变量绑定
2. 少用动态SQL,
3. 改cursor_sharing
4. Flush the Shared Pool
5. 上metalink查相关的bug

解决方案 »

  1.   

    这是由于你某个程序段使用的大量的排序操作,从而是SGA区没法分配shared_pool所导致的,这样的话你要对你的程序进行优化,或者调整SGA的大小。
      

  2.   

    谢谢楼上各位的回答,其实我们公司安装在下面每个点的数据库的结构都是一样的,我说的是表结构,过程,函数,触发器,程序包体及与数据库相连的应用程序等等,表的数据当然不一样,但比这个点量更多,数据插入更频繁的点也没出过这样的问题,这个点与其他点唯一有差别的就是它有JAVA程序与之相连,我不知道JAVA程序会不会引起这个问题,否则我装了9.2还是会出现这样的情况的
      

  3.   

    不会,java没那么次,它还是调用oracle的API去访问数据库.
    要不打补丁到8.1.7.4,要稳定些,少些bug