我是靠谱客的博主 动人山水,最近开发中收集的这篇文章主要介绍Oracle数据库常用SQL之查询数据库中的锁情况,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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之查询数据库中的锁情况所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部