본문 바로가기
→ 프로그래밍.데이터베이스/DB,SQL

[오라클 DB LOCK 문제 해결]LOCK 걸린 테이블 조회 및 세션 해제(LOCK KILL)

by jjo_Mean 2016. 9. 19.

오라클 DB LOCK 조회 및 세션 죽이기(락 해제)


 - 쿼리를 조회하다보면 타임아웃에 걸려 쿼리가 실행되지 않을때가 있고, 결과 값이 나오지 않는 경우들이 종종있습니다.

저도 쿼리작성 하다가 조회가되지 않으면 잘못된 쿼리인가 했던적이 많은데 문제는 다른 테이블에서 락이 걸려 문제가 발생했었습니다. 또한, 어느 순간부터 데이터가 삭제가 않되거나 업데이트가 되지 않는 상태가 발생하면 테이블에 락이 걸린 상태일 가능성이 높습니다.


비정상적으로 종료했을 시 또는 사용중 갑자기 제대로 작동이 되지않으면 DB LOCK 조회를 먼저 한번 해보시기 바랍니당!!


[TM(TABLE LOCK) 조회하기]

SELECT B.TYPE

, C.OBJECT_NAME

, A.SID        -- SESSION ID를 의미함

, A.SERIAL#    -- SERIAL 넘버  

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' ;


[TABLE으로 조회하기]

      SELECT A.SID

     , A.SERIAL# 

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' 

        AND C.OBJECT_NAME='테이블명' ;


[세션 죽이기]

ex) SID = 24 , SERIAL_NO = 1200

->ALTER SYSTEM KILL SESSION '24, 1200';


※ 락을 제거하기 위해서는 일반 계정으로는 할 수 없고, SYSTEM 계정 즉, 관리자계정으로만 작업을 진행하실 수 있습니다.