我们公司有好多的机器,在服务器(安装有两个oracle数据库,在刚启动时,一个oracle数据库占用80M的内存,另一个oracle占70M的内存,均不占用cpu;不定时的运行一段时间后,一个oracle数据库占用170M的内存,另一个oracle占用130M的内存,CPU占资源占用到了100%,客户端无法链接服务器。
我现在想知道的是:有没有一个工具或一组命令来知道是哪一个客户端占用的资源较多。
谢谢了,急用

解决方案 »

  1.   

    这个简单啊 呵呵
    分别在两台数据库服务器上,运行top命令或者sar(sar 2 5)命令,就知道两台服务器的CPU等负荷状态了。
    在其中的一台服务器上,运行ps(ps -aux|more)命令就知道哪个ORACLE进程(PID)占用的CPU资源多,根据PID在V$SESSION里查找就可以知道是哪个SESSION ID了,此时你可以运行ORACLE的命令或用工具把该连接给短了。
      

  2.   

    忘了说了,如果你想直接断连接,可以执行kill -9 PID,直接杀掉用户进程。
    当然找到了PID,在V$SESSION里就可以找到对应的客户了。
      

  3.   

    楼主用的服务器多半是pc/nt架构的,不是unix平台。不知道怎么monitor。
    按照我的经验cpu使用率100%最有可能是因为非优化sql引起的,比如一个很大的in()操作
      

  4.   

    楼上说的有道理,如果SQL语句本身效率不高的话,会占用一定的CUP资源.在操作系统种也能体现出来.