小记:找到占用CPU高的PL/SQL语句

    下午一个同事过来说某Linux测试服务器超级慢,严重影响工作。
    登录到服务器上使用top查看,发现oracle进程把CPU占到了100%。
   于是用了以下步骤把导致性能问题的SQL找出来:
1、使用top找到占CPU100%的ORACLE进程的pid为1234;
2、打开PL/SQL DEV,查询这个进程的信息:
SELECT   *   FROM  V$PROCESS  WHERE  spid = 1234 ;
3、找到这个进程对应的会话的信息:
SELECT  sid, program  FROM  V$SESSION s
WHERE   EXISTS ( SELECT   1   FROM  V$PROCESS  WHERE  spid = 1234   AND  ADDR  =  S.PADDR);
4、从上面已经知道是哪个客户端的哪个程序导致的了,继续:
    找到这些会话的SQL
SELECT  sql_text
FROM  V$SESSION a  LEFT   OUTER   JOIN  v$sqltext b  ON  a.sql_address = b.address
WHERE   EXISTS ( SELECT   1   FROM  V$PROCESS  WHERE  spid = 17518   AND  ADDR  =  a.PADDR)
ORDER   BY  a.SERIAL#, b.piece
5、这个语句要更好一点,根据CPU占用情况排序
SELECT  b.sql_text
FROM  V$SESSION a  LEFT   OUTER   JOIN  v$sqlarea b  ON  a.sql_address = b.address
WHERE   EXISTS ( SELECT   1   FROM  V$PROCESS  WHERE  spid = 1234   AND  ADDR  =  a.PADDR)
ORDER   BY  b.CPU_TIME  DESC


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值