概述
定位会话、定位等待事件、定位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]
最后
以上就是威武草丛为你收集整理的Oracle 查看当前所有会话SQL和等待事件定位会话、定位等待事件、定位SQL的全部内容,希望文章能够帮你解决Oracle 查看当前所有会话SQL和等待事件定位会话、定位等待事件、定位SQL所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复