[DB] ORACLE

[ORACLE] Lock 걸린 테이블 및 오브젝트 조회, Kill session

mewoni 2023. 9. 27. 08:14
반응형

1. Lock 걸린 오브젝트 조회

SELECT OBJECT_ID
     , SESSION_ID       -- SID
     , ORACLE_USERNAME
     , OS_USER_NAME
  FROM V$LOCKED_OBJECT;

 

2. 해당 SID, Serial# 번호로 Lock 걸린 테이블 조회

SELECT A.SID
     , A.SERIAL#
     , object_name
     , A.SID || ', ' || A.SERIAL# AS KILL_TASK
  FROM V$SESSION A
 INNER JOIN V$LOCK B
    ON A.SID = B.SID
 INNER JOIN DBA_OBJECTS C
    ON B.ID1 = C.OBJECT_ID
 WHERE B.TYPE  = 'TM' --Table object type;

 

3. Lock 발생시킨 사용자 및 Object, Query(구문) 조회

SELECT DISTINCT T1.SESSION_ID
     , T2.SERIAL#
     , T4.OBJECT_NAME
     , T2.MACHINE
     , T2.TERMINAL
     , T2.PROGRAM
     , T3.ADDRESS
     , T3.PIECE
     , T3.SQL_TEXT
FROM V$LOCKED_OBJECT T1
   , V$SESSION T2
   , V$SQLTEXT T3
   , DBA_OBJECTS T4
WHERE 1=1
  AND T1.SESSION_ID = T2.SID
  AND T1.OBJECT_ID = T4.OBJECT_ID
  AND T2.SQL_ADDRESS = T3.ADDRESS
ORDER BY T3.ADDRESS, T3.PIECE;

 

4. SID, Serial# 번호로 Session Kill 을 통해 Lock 해제

ALTER SYSTEM KILL SESSION '[sid], [serial#]';

-- ex
ALTER SYSTEM KILL SESSION '401, 12761';

 

 *** Kill Session 명령어는 별도 COMMIT 명령이 필요 없음 ***

반응형