Oracle 查看当前所有会话SQL和等待事件

定位会话、定位等待事件、定位SQL

select t2.sid, t2.SERIAL#, -- 库级唯一定位一个session
       t1.SPID OS_PID,     -- 操作系统的PID
       t3.SQL_ID, t2.EVENT,-- SQLID和等待事件
       t2.P1TEXT, t2.P1,   -- 等待事件的P1信息
       t2.p2TEXT, t2.P2,   -- 等待事件的P2信息
       t2.p3TEXT, t2.P3,   -- 等待事件的P3信息
       t3.SQL_FULLTEXT     -- 被执行的SQL完整内容
  from v$process t1, v$session t2, v$sql t3
 where t1.ADDR = t2.PADDR
   and t2.STATUS = 'ACTIVE'
-- 表示当前正在执行SQL的会话
-- and t2.STATUS = 'INACTIVE'
-- 表示当前等待执行SQL的会话
-- and t2.STATUS = 'KILLED'
-- 表示当前会话正在被杀掉,未提交事务强制回滚
   and t2.SQL_ID = t3.SQL_ID;
-- t2.sid, t2.SERIAL#      可以用作库级杀死会话:alter system kill session 't2.sid, t2.SERIAL#';
-- t1.SPID OS_PID          可以用作系统级杀死会话:kill -9 t1.SPID
-- t2.EVENT 和 P1、P2、P3  不同的等待事件的P1、P2和P3的信息是不尽相同的,具体要查官档
-- t3.SQL_FULLTEXT         是一个CLOB类型的字段

去掉注释,较为清爽的ctrl+c版SQL:

select t2.sid, t2.SERIAL#, t1.SPID OS_PID,
       t3.SQL_ID, t2.EVENT,
       t2.P1TEXT, t2.P1, t2.p2TEXT, t2.P2,
       t2.p3TEXT, t2.P3, t3.SQL_FULLTEXT
  from v$process t1, v$session t2, v$sql t3
 where t1.ADDR = t2.PADDR
   and t2.STATUS = 'ACTIVE' -- 'INACTIVE'
   and t2.SQL_ID = t3.SQL_ID;

[TOC]

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值