檢視當前最消耗CPU/Memory的oracle程式
找出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 <trace file name> <output file name> sort=fchela,exeela,prsela
根據相應資訊可以進一步確定資源都消耗在哪些地方
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2130257/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux下檢視最消耗CPU、記憶體的程式Linux記憶體
- 檢視oracle當前sessionOracleSession
- 檢視當前系統程式
- 如何快速定位當前資料庫消耗 CPU 最高的 sql 語句?資料庫SQL
- Linux(CentOS) 檢視當前佔用CPU或記憶體最多的K個程式LinuxCentOS記憶體
- 【轉】檢視Oracle當前使用者下的資訊Oracle
- Linux(CentOS) 如何檢視當前佔用CPU或記憶體最多的K個程式LinuxCentOS記憶體
- linux 查詢最消耗CPU和記憶體的程式Linux記憶體
- 檢視當前oracle中正在執行的sql語句OracleSQL
- 檢視git當前版本號Git
- Oracle 檢查當前資料庫CPU和PSU補丁資訊Oracle資料庫
- Oracle 檢視當前會話 SESSION ID 方法 說明Oracle會話Session
- 檢視當前Oracle資料庫的時間及其SCN號Oracle資料庫
- oracle 檢索最近10分鐘裡消耗IO最嚴重的前5條SQL語句OracleSQL
- 檢視當前系統程式指令碼ps.sh指令碼
- 從V$SESSMETRIC檢視中找出當前最佔用資源的會話SSM會話
- 檢視當前windows使用的字符集Windows
- 檢視當前linux的核心版本(轉)Linux
- MySQL檢視當前資料庫庫MySql資料庫
- 檢視當前會話session id方法:會話Session
- 檢視當前jdk能支援的字符集JDK
- 如何檢視資料庫當前的狀態?資料庫
- Oracle檢視當前登陸使用者的許可權或者角色Oracle
- Oracle檢視允許的最大連線數和當前連線數Oracle
- Oracle資料庫 11.2.0.4 EMON程式持續消耗CPUOracle資料庫
- Linux檢視環境變數當前資訊和檢視命令Linux變數
- 檢視當前pg會話連線數會話
- 檢視當前使用者正在等待事件事件
- linux下檢視當前網路流量Linux
- oracle中找出最消耗資源的sqlOracleSQL
- oracle檢視允許的最大連線數和當前連線數等資訊Oracle
- git 檢視當前分支指向提交物件SHA值Git物件
- 檢視當前Windows系統CMD所有的命令Windows
- 使用sestatus命令來檢視SELinux的當前狀態Linux
- Java 例項 - 如何檢視當前 Java 執行的版本?Java
- 檢視當前登入的使用者及其IP地址
- [Android Memory] Android系統中檢視某個應用當前流量的方法Android
- android檢視當前應用的的包名和activityAndroid