ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 查看当前最消耗CPU/Memory的oracle进程

查看当前最消耗CPU/Memory的oracle进程

原创 Linux操作系统 作者:myownstars 时间:2012-04-10 13:28:05 0 删除 编辑

找出LINUX最消耗资源的进程

 

TOP

查看当前最消耗CPU/Memory的进程信息

主要参数
d
:指定更新的间隔,以秒计算。

q
:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。

c
:显示进程完整的路径与名称。

S
:累积模式,会将己完成或消失的子行程的CPU时间累积起来。

s
:安全模式。

i
:不显示任何闲置(Idle)或无用(Zombie)的行程。

n
:显示更新的次数,完成后将会退出
to
显示参数
:
PID
Process ID):进程标示号。

USER
:进程所有者的用户名。

PR
:进程的优先级别。

NI
:进程的优先级别数值。

VIRT
:进程占用的虚拟内存值。

RES
:进程占用的物理内存值

SHR
:进程使用的共享内存值。

S
:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

%CPU
:该进程占用的CPU使用率。

%MEM
:该进程占用的物理内存和总内存的百分比

TIME
+:该进程启动后占用的总的CPU时间。

Command
:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

top
命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

<
空格>:立刻刷新。

P
:根据CPU使用大小进行排序。

T
:根据时间、累计时间排序。

q
:退出top命令。

m
:切换显示内存信息。

t
:切换显示进程和CPU状态信息。

c
:切换显示命令名称和完整命令行。

M
:根据使用内存大小进行排序

W
:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

 

PS

可以使用一下命令查使用内存最多的5个进程

ps -aux | sort -k4nr | head 5

可以使用一下命令查使用CPU最多的5个进程

ps -aux | sort -k3nr | head 5

 

VMSTAT

只能给出当前CPU/MEMORY/IO的总体性能,没有单个进程信息

 

通过以上命令大致可以确定OS消耗最多资源的进程信息,另外可以从数据库层面查看TOP进程

 

找出过去4个小时内登陆且在近30分钟调用过的sql

 

Find Sessions with the Highest CPU Consumption

 

 

-- sessions with highest CPU consumption

SELECT s.sid, s.serial#, p.spid as "OS PID",s.username, s.module, st.value/100 as "CPU sec"

FROM v$sesstat st, v$statname sn, v$session s, v$process p

WHERE sn.name = 'CPU used by this session' -- CPU

AND st.statistic# = sn.statistic#

AND st.sid = s.sid

AND s.paddr = p.addr

AND s.last_call_et < 1800 -- active within last 1/2 hour

AND s.logon_time > (SYSDATE - 240/1440) -- sessions logged on within 4 hours

ORDER BY st.value;

 

       SID    SERIAL# OS PID       USERNAME             MODULE                                      CPU sec

---------- ---------- ------------ -------------------- ---------------------------------------- ----------

       141       1125 15315        SYS                  sqlplus@coehq2 (TNS V1-V3)                     8.25

       147        575 10577        SCOTT                SQL*Plus                                     258.08

       131        696 10578        SCOTT                SQL*Plus                                     263.17

       139        218 10576        SCOTT                SQL*Plus                                     264.08

       133        354 10583        SCOTT                SQL*Plus                                     265.79

       135        277 10586        SCOTT                SQL*Plus                                     268.02

 

 

Find Sessions with Highest Waits of a Certain Type

 

-- sessions with the highest time for a certain wait

SELECT s.sid, s.serial#, p.spid as "OS PID", s.username, s.module, se.time_waited

FROM v$session_event se, v$session s, v$process p

WHERE se.event = '&event_name'

AND s.last_call_et < 1800 -- active within last 1/2 hour

AND s.logon_time > (SYSDATE - 240/1440) -- sessions logged on within 4 hours

AND se.sid = s.sid

AND s.paddr = p.addr

ORDER BY se.time_waited;

 

SQL> /

Enter value for event_name: db file sequential read

 

       SID    SERIAL# OS PID       USERNAME             MODULE                                   TIME_WAITED

---------- ---------- ------------ -------------------- ---------------------------------------- -----------

       141       1125 15315        SYS                  sqlplus@coehq2 (TNS V1-V3)                         4

       147        575 10577        SCOTT                SQL*Plus                                       45215

       131        696 10578        SCOTT                SQL*Plus                                       45529

       135        277 10586        SCOTT                SQL*Plus                                       50288

       139        218 10576        SCOTT                SQL*Plus                                       51331

       133        354 10583        SCOTT                SQL*Plus                                       51428

 

10g or higher: Find Sessions with the Highest DB Time

 

-- sessions with highest DB Time usage

SELECT s.sid, s.serial#, p.spid as "OS PID", s.username, s.module, st.value/100 as "DB Time (sec)"

, stcpu.value/100 as "CPU Time (sec)", round(stcpu.value / st.value * 100,2) as "% CPU"

FROM v$sesstat st, v$statname sn, v$session s, v$sesstat stcpu, v$statname sncpu, v$process p

WHERE sn.name = 'DB time' -- CPU

AND st.statistic# = sn.statistic#

AND st.sid = s.sid

AND  sncpu.name = 'CPU used by this session' -- CPU

AND stcpu.statistic# = sncpu.statistic#

AND stcpu.sid = st.sid

AND s.paddr = p.addr

AND s.last_call_et < 1800 -- active within last 1/2 hour

AND s.logon_time > (SYSDATE - 240/1440) -- sessions logged on within 4 hours

AND st.value > 0;

 

       SID    SERIAL# OS PID       USERNAME MODULE                                   DB Time (sec) CPU Time (sec)      % CPU

---------- ---------- ------------ -------- ---------------------------------------- ------------- -------------- ----------

       141       1125 15315        SYS      sqlplus@coehq2 (TNS V1-V3)                       12.92           9.34      72.29

 

 

使用dbms_system.set_env/oradebug/dbms_monitor对相应进程作10046跟踪,然后使用tkprof格式化

tkprof sort=fchela,exeela,prsela

根据相应信息可以进一步确定资源都消耗在哪些地方

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-720785/,如需转载,请注明出处,否则将追究法律责任。

上一篇: direct IO和AIO
请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3040616