你需要跟踪一个每天数据库的内存变化情况。数据库的内存一般有data buffer和connection area是变化最大的。data buffer当有大数据量查询或者大量查询语句的时候会显著变化,而connection area当有大量用户连接的时候,也会变化很大。
因此,你要跟踪再判断是那块变化的较明显。

解决方案 »

  1.   

    首先要确定是oracle吃了内存,通过操作系统的工具去看看,是不是oracle干的。
    然后每天查一下v$sgastat,看看是不是有一个长的比较快的。
    如果是linux下,可以用ps -A v看看哪个进程占的内存最多,哪个长得最多
      

  2.   

    这种情况应该是SQL语句有问题,导致SQL语法解析(parse)的次数无限增多,直到填满整个POOL。
    oracle每发现一个新sql语句就将占用sql_area缓冲区,并将其内容写入sql_area表中不管什么情况,建议使用如下语句:(此语句在数据库空闲时不对数据库造成任何影响)
    ALTER SYSTEM FLUSH SHARED_POOL;然后再查看内容就会多出来很多的
      

  3.   

    oracle是着重与内存的,游标没关闭的话,如果达到最大游标数,
    你的应用会出错的,为什么不关闭游标?