오라클 LOCK 걸린 개체 확인 및 LOCK 해제
오라클 LOCK 걸린 개체 확인 및 LOCK 해제
LOCK 걸린 개체 확인
1
2
3
4
5
SELECT OBJECT_ID
, SESSION_ID
, ORACLE_USERNAME
, OS_USER_NAME
FROM V$LOCKED_OBJECT;
해당 SESSION_ID와 SERIAL 번호로 락걸린 개체 확인
1
2
3
4
5
6
7
8
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'
락 발생 사용자 및 OBJECT 조회 + 어떤 SQL를 실행중인지 확인
Lock을 해제하기전에 Lock을 유발시킨 SQL이 어떤것인지를 확인하여 실행되고 있는지 아니면 정말로 Lock 인지를 확인해야 함.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 T1.SESSION_ID = T2.SID
AND T1.OBJECT_ID = T4.OBJECT_ID
AND T2.SQL_ADDRESS = T3.ADDRESS
ORDER BY T3.ADDRESS, T3.PIECE;
SID와 시리얼 번호로 세션 해제
1
ALTER SYSTEM KILL SESSION ${2번에서 KILL_TASK로 조회한 결과값};
참고사이트
This post is licensed under
CC BY 4.0
by the author.