[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 명령이 필요 없음 ***
반응형