오라클 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 계정 즉, 관리자계정으로만 작업을 진행하실 수 있습니다.
'→ 프로그래밍.데이터베이스 > DB,SQL' 카테고리의 다른 글
오라클 조건함수 DECODE 함수, CASE WHEN 표현식 (0) | 2016.11.24 |
---|---|
[ORACLE] 오라클 함수(function) 만들기. 함수 생성 (5) | 2016.11.05 |
[ORACLE] LPAD RPAD 함수 :: 문자길이 채우기 (0) | 2016.11.01 |
오라클 DB INSERT와 UPDATE문을 한번에 하기 → MERGE INTO !! (0) | 2016.09.23 |
Tomcat 서버 에러-Could not delete[파일이름]. May be locked by another process. (4) | 2016.09.09 |