SELECT
RPAD('+', LEVEL, '-')
|| SID
|| ' '
|| SESS.MODULE AS SESSION_LEVEL, --锁关系层级
SESS.INST_ID AS INST_ID , --会话实例
SID ,
SERIAL# ,
OSID ,
USERNAME ,
MACHINE ,
PROGRAM ,
SESS.SQL_ID AS SQL_ID ,
OBJECT_NAME ,
WAIT_EVENT_TEXT ,
IN_WAIT_SECS ,
NUM_WAITERS , --此会话阻塞的会话数
'SID:'
|| BLOCKER_SID
|| ','
|| BLOCKER_SESS_SERIAL#
|| ',@'
|| BLOCKER_INSTANCE AS BLK_INFO, --上级阻塞者
'SID:'
|| FINAL_BLOCKING_SESSION
|| ',@'
|| FINAL_BLOCKING_INSTANCE AS F_BLK_INFO, --最终阻塞者
'ALTER SYSTEM KILL SESSION '''
|| SID
|| ','
|| SERIAL#
|| ',@'
|| SESS.INST_ID
|| ''' IMMEDIATE;' AS KILL_SQL, ---杀锁会话
RPAD(' ', LEVEL)
|| SQL_TEXT SQL_TEXT --锁会话SQL
FROM
V$WAIT_CHAINS C
LEFT OUTER JOIN DBA_OBJECTS O
ON
(
ROW_WAIT_OBJ# = OBJECT_ID
)
JOIN GV$SESSION SESS USING (SID)
LEFT OUTER JOIN GV$SQL SQL
ON
(
SQL.SQL_ID = SESS.SQL_ID
AND SQL.CHILD_NUMBER = SESS.SQL_CHILD_NUMBER
)
CONNECT BY PRIOR SID = BLOCKER_SID
AND PRIOR SESS_SERIAL# = BLOCKER_SESS_SERIAL#
AND PRIOR INSTANCE = BLOCKER_INSTANCE START
WITH BLOCKER_IS_VALID = 'FALSE'
AND NUM_WAITERS <> 0;
最后
以上就是动人山水最近收集整理的关于Oracle数据库常用SQL之查询数据库中的锁情况的全部内容,更多相关Oracle数据库常用SQL之查询数据库中内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复