欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle锁表查询

程序员文章站 2022-06-02 11:48:59
...

查询锁表SQL

--
SELECT SESS.SID, --sessionId
               SESS.SERIAL#, --同一session中SERIAL#不会相同
               LO.ORACLE_USERNAME, --对象拥有者
               LO.OS_USER_NAME,--操作系统的用户名
               AO.OBJECT_NAME,--对象名称
               LO.LOCKED_MODE--锁的模式
    FROM V$LOCKED_OBJECT LO, DBA_OBJECTS AO, V$SESSION SESS, V$PROCESS P
 WHERE AO.OBJECT_ID = LO.OBJECT_ID
     AND LO.SESSION_ID = SESS.SID;
--sid 会重用,但是同一个SID被重用时,serial#会增加,不会重复
--sid 在同一个instance的当前session中是一个unique key,   而sid ,serial#则是在整个instance生命期内的所有session中是unique key。

杀掉session

--方式一:
alter system kill session '575,24071';
--方式二:
DECLARE
        CURSOR MYCUR IS
        
                SELECT B.SID, B.SERIAL#
                    FROM V$LOCKED_OBJECT A, V$SESSION B
                 WHERE A.SESSION_ID = B.SID
                 GROUP BY B.SID, B.SERIAL#;

BEGIN
        FOR CUR IN MYCUR
        LOOP
                EXECUTE IMMEDIATE ('alter system kill session ''' || CUR.SID || ',' ||
                                                    CUR.SERIAL# || ''' ');
        END LOOP;