종종 Table에 Lock이 잡혀 있을 경우가 있습니다
특정 사용자가 COMMIT을 하지 않았을 수도, 프로그램 수행 중 어떤 문제로 인하여 Lock이 발생하는 경우도 있습니다
당장 해당 TABLE에 대한 LOCK을 풀지 않으면 업무에 지장이 있을 경우 KILL 해야합니다
DB LOCK 조회
SELECT SESSION_ID, OWNER, NAME
FROM DBA_DML_LOCKS;
SELECT A.SID, A.SERIAL#, B.TYPE, C.OBJECT_NAME, A.MACHINE, A.TERMINAL, A.PROGRAM
-- 어떤PC 및 프로그램에서 Lock이 발생되었는지 확인 가능
FROM V$SESSION A,
V$LOCK B,
DBA_OBJECTS C
WHERE A.SID = B.SID
AND B.ID1 = C.OBJECT_ID
AND B.TYPE = 'TM'
※ FOR UPDATE 문을 사용하여 테이블에 Lock을 강제로 발생시켜두고 확인해보시기 바랍니다
V$LOCK 조회
SELECT *
FROM V$LOCK
WHERE TYPE = 'TX'
LMODE <-> REQUEST 를 통해 어느 세션[SID]이 LOCK을 잡고 있는지 확인이 가능합니다
REQUEST = 0 이 현재 잡고 있음
V$SESSION 조회
SELECT SID, SERIAL#, OSUSER, PROGRAM
FROM V$SESSION
WHERE SID = 'SESSION_ID'
LOCK에 대한 상세정보를 조회 할 수 있습니다 [ 사용자, 장비, 프로그램 등 ]
조회한 SID, SERIAL#을 가지고 SESSION 을 KILL할 수 있습니다
SESSION KILL
ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE
'너알나알 > 오라클[Oracle]' 카테고리의 다른 글
[오라클]테이블 구조 조회+제약조건 확인 (2) | 2024.03.12 |
---|---|
[오라클]계정 LOCK(ORA-28000) + 비밀번호 만료일 변경 (0) | 2024.03.12 |
[오라클]테이블+FUNCTION(오브젝트) 권한 부여 (0) | 2024.03.11 |
[오라클]오브젝트 INVALID 조회+활성화 (0) | 2024.03.11 |
[오라클]프로시져+트리거+FUNCTION 내 STRING 찾기 (0) | 2024.03.11 |
댓글