求解:我使用的Oracle 9i + c#开发一个程序,oracle.exe进程所占用的内存不断地缓慢增长!~
目前已运行了10个月左右,内存长了差不多300M.
程序里边与数据库的连接都是用完就关掉的,我在oracle里查看当前的连接数也都正常。
就是搞不明白哪里出了问题,请各位同仁指条明路!

解决方案 »

  1.   

    是否达到并超过sga_max_size值?
      

  2.   

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    sga_max_size                         big integer 135338868怎么知道有没有超过?
      

  3.   


    这个设计到内存的机制问题。内存涨了300M,只要在SGA的范围内都是正常的。 Linux 对内存的管理机制是申请了内存之后不会释放,所以Linux 系统运行的时间越长,剩余内存就越少,当进程需要内存资源时,而系统内存又不够时,会通过swap进行交换。故linux 设置swap 建议都是内存的2倍,这样就能保证内存的正常使用,如果swap空间不够,不能满足交换,物理内存就会浪费掉。所以经常能看到Linux 内存几乎全被使用了。故看Linux 内存使用情况,主要还是看swap 交换是否频繁.windows 内存机制没有什么研究过,不过当window进程结束之后,它的内存是马上就释放了的。 看楼主给出的参数,SGA_MAX_SIZE 是135M,这个不太正常. 不知是怎么查出来的,可以用下面的方法试试:
    SQL> conn / as sysdba
    Connected.
    SQL> show sgaTotal System Global Area  243269632 bytes
    Fixed Size                  1218724 bytes
    Variable Size              96470876 bytes
    Database Buffers          138412032 bytes
    Redo Buffers                7168000 bytes
    建议: 数据库服务器10个月没有重启了,一般系统都会做计划性的停机维护。过一段时间重启一下服务器,如半年。 重启的时候,所有的内存资源都会释放掉. 
    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716
      

  4.   


    补充一点,SGA 的大小对数据库性能有很大影响。 一般对一个系统的SGA调整都是比较耗时的,因为不确定SGA设多大合适,需要慢慢调整。SGA 小了要调大,大了要调小。 有点小麻烦..可以参考一下:Oracle 检查命中率的SQL
    http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4674153.aspx------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716
      

  5.   

    show pgashow sort_area_size
    windows平台下,所有的ORACLE进程(准确点说,在win上其为线程)体现在操作系统里只是名叫ORACLE.EXE父映象,影子线程里最多的部分是SORT区,看看sort_area_size设置是否合适。当连接数不断增长的,内存会不断走高。最好能监控下,连接数下降时,系统是否会释放一部分内存。