文章目录
如何查看及解决最耗CPU的SQL语句
一、如何查看及解决最耗CPU的SQL语句
1.使用top监控服务器负载
在Linux系统中用top监控服务器负载,在Linux系统的命令窗口输入:
top
如果发现user中的CPU过高,其中Oracle进程的CPU比较高。
比如Oracle中最高的进程pid为1138782,占CPU27%,则执行下一步。
2.根据Oracle进程的pid查出对应数据库会话的sid、serial#
进入数据库中,根据Oracle进程的pid查出对应数据库会话的sid、serial#:
select s.sid,s.serial# from v$session s,v$process p
where s.paddr=p.addr and p.spid = '1138782';
查出来的结果sid、serial#分别为482、56767
3.根据数据库会话sid查出具体的SQL语句
select sql_text
from v$sqltext a
where a.hash_value = (select sql_hash_value from v$session b where b.sid = '482')
order by piece;
4.杀死该SQL语句的会话
(1)在数据库中杀死SQL语句的会话:
alter system kill session '482,56767';
(2)在Linux系统中强制杀死Oracle的进程:
kill -9 1138782