捕获过度消耗CPU的SQL步骤
一、vmstat命令
**************************************************************************
$ vmstat 2
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr f0 s0 s1 -- in sy cs us sy id
0 0 0 851024 61452 52 149 143 1 1 0 2 0 0 6 0 264 2331 224 2 3 95
0 0 0 803908 51732 2 20 0 0 0 0 0 0 0 4 0 271 273 236 1 1 98
***************************************************************************
说明:我这系统没有问题sql,不好演示。如果有问题sql,cpu列中的id可以会接近于0或等于0
辅助命令prstat
**************************************************************************
$ prstat
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
18309 oracle 5804K 4356K cpu0 59 0 0:00:00 0.2% prstat/1
23660 oracle 224M 74M sleep 39 10 0:20:08 0.1% java/27
23410 oracle 255M 175M sleep 59 0 0:04:22 0.1% oracle/258
23740 oracle 252M 184M sleep 59 0 0:15:26 0.1% oracle/1
23404 oracle 251M 171M sleep 59 0 0:12:05 0.1% oracle/1
**************************************************************************
二、查看进程数量(一个稳定的系统,进程数量变化不大)
$ ps -ef|grep ora|wc -l
wc -l ---------统计进程个数
三、查看等待事件
SQL> select sid,event,p1,p1text from v$session_wait;
四、捕获问题sql
捕获问题sql的脚本
SQL> select sql_text
2 from v$sqlarea s
3 where s.hash_value=(select sql_hash_value
4 from v$session y
5 where y.sid='&sid') ### '&sid'为v$session_wait中的sid ###
五、查看问题sql的explain plan
SQL> set autotrace on
六、优化sql
eg:
db file scattered read 考虑index
db file sequential read 考虑I/O
等等
一、vmstat命令
**************************************************************************
$ vmstat 2
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr f0 s0 s1 -- in sy cs us sy id
0 0 0 851024 61452 52 149 143 1 1 0 2 0 0 6 0 264 2331 224 2 3 95
0 0 0 803908 51732 2 20 0 0 0 0 0 0 0 4 0 271 273 236 1 1 98
***************************************************************************
说明:我这系统没有问题sql,不好演示。如果有问题sql,cpu列中的id可以会接近于0或等于0
辅助命令prstat
**************************************************************************
$ prstat
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
18309 oracle 5804K 4356K cpu0 59 0 0:00:00 0.2% prstat/1
23660 oracle 224M 74M sleep 39 10 0:20:08 0.1% java/27
23410 oracle 255M 175M sleep 59 0 0:04:22 0.1% oracle/258
23740 oracle 252M 184M sleep 59 0 0:15:26 0.1% oracle/1
23404 oracle 251M 171M sleep 59 0 0:12:05 0.1% oracle/1
**************************************************************************
二、查看进程数量(一个稳定的系统,进程数量变化不大)
$ ps -ef|grep ora|wc -l
wc -l ---------统计进程个数
三、查看等待事件
SQL> select sid,event,p1,p1text from v$session_wait;
四、捕获问题sql
捕获问题sql的脚本
SQL> select sql_text
2 from v$sqlarea s
3 where s.hash_value=(select sql_hash_value
4 from v$session y
5 where y.sid='&sid') ### '&sid'为v$session_wait中的sid ###
五、查看问题sql的explain plan
SQL> set autotrace on
六、优化sql
eg:
db file scattered read 考虑index
db file sequential read 考虑I/O
等等
作者:admin@常来吧
地址:http://www.chl8.com/post/645/
版权所有!转载时请必须遵守以链接形式署名-非商业性使用-完整方式共享!
欢迎在常来吧留言&评论!
上一篇:
[转]一段使用 iptable
[转]一段使用 iptable

文章来自: 本站原创
Tags:
*独家* 在普通用户下也能执