www.csdn.net Login:baiyoujun Password:200019768126大家好!
     我采用B/S结构开发了一套生产性系统,当登录用户为300人多时,在系统级查看系统资源,此时发现
内存仅剩几十MB,CPU也剩余1%左右!(注:以上资源被ORACLE所占用)软件环境:     采用的操作系统为:Red Flag Linux 4.3
     数据库采用:ORACLE 9.I
     Web服务:Weblogic 8.1
     应用程序:java硬件环境:    CPU: 4个2.8G
    内存:4G
另:怎么在ORACLE中查看,被占资源的进程?有什么方法解决上述问题?非常感谢大家!

解决方案 »

  1.   

    你的机器是什么配置啊
    weblogic有没有配连接池啊  还是直接用thin连接的?如果直连的话300个用户,大概也要耗掉1个多G的内存吧
      

  2.   

    硬件环境:    CPU: 4个2.8G
        内存:4G一个ORACLE连接就要花5M左右的内存,你的weblogic和数据库是不是跑在一台机器上的。
      

  3.   

    我的WEB服务与数据库服务嚣在2台机器上!另:我所说的300个用户并不是指并发量,当300个用户登录系统后,我在ORACLE端通过SQL查并发用户数,不到40个。如:
    select count(*) from v$session where username is not null
      

  4.   

    用操作系统的top程序看看是什么进程占用cpu。oracle的SGA和PGA是怎样配置的?
      

  5.   

    oracle内,仅对并发数做了调整,其余参数均未修改。我在WEB端用TOP命令后,有100个左右Time Out 的进程(指连接数据库的进程)。
    问题:
    1、怎么才能在SQL中查看当前ORACLE内存的占用情况。
    2、能否查出执行时间或耗费内存较高的SQL语句(应用程序执行的SQL语句)
      

  6.   

    你所说的cpu和内存占用问题是在哪台服务器上?WEB还是数据库服务器?如果是数据库服务器,应该在数据库服务器上运行top。
    oracle中主要是查看SGA使用了多少内存,还有就是PGA的大小。可以在sqlplus中用system用户执行:
    show sga
    show parameters pga
      

  7.   

    最好还是把sga中的每一项内存占用都检查一下
    你的问题好像挺严重的
    应该不是客流量的问题
      

  8.   

    直接使用的是Statement吧,没有使用preparedStatement吧,300多个用户的sql语句解析也能把cpu耗尽了。呵呵。
      

  9.   

    pga_aggregate_target                 big integer 25165824
    SQL> show sga;Total System Global Area  236000356 bytes
    Fixed Size                   451684 bytes
    Variable Size             201326592 bytes
    Database Buffers           33554432 bytes
    Redo Buffers                 667648 bytes
    SQL> show parameters pgaNAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    pga_aggregate_target                 big integer 25165824
      

  10.   

    WEB服务器没问题,问题仅出现在DB服务器上!
    请问大家与直連有关系吗?有什么快速的解决办法?
    我做了4个项目,现在才发现都是这样!哈哈,不好意思!
    另:我要WEB端查看进程时,有好多连接库的进程超时!
    tcp        0      0 192.168.1.1:12251       192.168.1.2:1521        TIME_WAIT   
    tcp        0      0 192.168.1.1:12252       192.168.1.2:1521        TIME_WAIT   
    tcp        0      0 192.168.1.1:12253       192.168.1.2:1521        TIME_WAIT   
    tcp        0      0 192.168.1.1:12254       192.168.1.2:1521        TIME_WAIT   
    tcp        0      0 192.168.1.1:12255       192.168.1.2:1521        TIME_WAIT   
    tcp        0      0 192.168.1.1:12240       192.168.1.2:1521        TIME_WAIT 
    例如这样的超时进程有300~400个,正常吗?为什么会出现这样的现象呢?有什么解决办法吗?
    非常感谢大家!  
      

  11.   

    Database Buffers  为什么舍不得给呢?呵呵。太小了吧。
      

  12.   

    应该放多大,您给我一个建议真吧!
    这此都是初始化参数,我没做过任何调整!DB服务器物理内存为4G!谢谢
      

  13.   

    请先调整你的SGA_MAX_SIZE参数.分配到2G左右.
    数据区建议你给1G以上的shared_pool_size看你的应用吧.最好做一个STATSPACK就知道怎么去分配了.
      CPU过高还有可能是SQL造成的.去查一查你的V$session_long_ops表.看看是否有很多长时间的SQL.