ORACLE 实时TOP SESSION查询

本文提供了一种方法查询当前运行的SESSION中消耗资源最多的SQL语句,包括CPU、内存和I/O使用情况,并通过脚本实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询目前正在运行的SESSION的TOPSQL,不是很准,但是够用,感觉比从ASH里面查更直观一点,

一直想结合OS 的ps 命令写个脚本直接找出TOP CPU 进程的SQL,但AIX 的ps 命令出来的CPU占用

率更TOPAS 显示差太多,阀值很不好定。


with tsql as (select  
       s.sid, s.BLOCKING_SESSION lk_sid,  s.machine,s.osuser,  S.SQL_ID,       Q.CHILD_NUMBER,
       S.EVENT,       Q.EXECUTIONS EXECS,
       round(Q.ELAPSED_TIME / decode(Q.EXECUTIONS,0,1,Q.EXECUTIONS) / 1000 / 1000,3) ELTM,
       round(Q.BUFFER_GETS / decode(Q.EXECUTIONS,0,1,Q.EXECUTIONS),2) buffget,
       round(Q.CPU_TIME / decode(Q.EXECUTIONS,0,1,Q.EXECUTIONS),2) CPUTM,
       round(Q.DISK_READS / decode(Q.EXECUTIONS,0,1,Q.EXECUTIONS),2) DISKRDS,
       case when s.lockwait is not null then substr(s.p2raw,-8)||substr(s.p3raw,-8) end lk_xid  
       ,Q.LAST_ACTIVE_TIME,Q.SQL_TEXT
  from v$session s, v$sql q
 where s.STATUS = 'ACTIVE'
   AND S.SQL_ID = Q.SQL_ID
   AND S.SQL_CHILD_NUMBER = Q.CHILD_NUMBER)
select * from (
select 'cpu' item,rownum sn,a.* from (
select    
       sid, lk_sid, machine, osuser,    SQL_ID,       CHILD_NUMBER,       EVENT,       EXECS,
       ELTM,       buffget,       CPUTM,       DISKRDS,    lk_xid,   LAST_ACTIVE_TIME,SQL_TEXT  
  from tsql order by CPUTM desc )a ) where sn <=15     
union all
select * from (
select 'ram' item,rownum sn,a.* from (
select    
       sid, lk_sid ,  machine, osuser,    SQL_ID,       CHILD_NUMBER,       EVENT,       EXECS,
       ELTM,       buffget,       CPUTM,       DISKRDS,   lk_xid,    LAST_ACTIVE_TIME,SQL_TEXT  
 from tsql order by buffget desc )a ) where sn <=15     
union all
select * from (
select 'i/o' item,rownum sn,a.* from (
select    
       sid, lk_sid ,  machine, osuser,    SQL_ID,       CHILD_NUMBER,       EVENT,       EXECS,
       ELTM,       buffget,       CPUTM,       DISKRDS,   lk_xid,    LAST_ACTIVE_TIME,SQL_TEXT  
 from tsql order by DISKRDS desc )a ) where sn <=15   
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值