[ORACLE]Table Lock 걸렸을 때 처리 (ORA-00054)

Database 2012.04.19 11:45 Posted by 애플자라

ORA-00054 발생했을때 처리하는 방법..

발생 가능성은 다양하게 존재한다. Commit가 수행되지 않았을 경우라던가 Toad에서 Schema Browser를 사용하다가 삽질을 했다던가 등의 문제로 다양한 경우에서 발생할 수 있는 문제이다.

Truncate같은 명령은 ORA-00054라는 에러라도 출력하지만, DML(Delete) 문장 실행시엔 그냥 멈춰버리는 경우도 있다고 한다.

해결 방법은 오라클 서비스를 재시작 하면 쉽게 처리가되지만, DB를 사용하는 곳에서 DB 재시작이 그리 녹녹하진 않을 것이다. 이러한 에러가 발생하는 이유는 테이블에 Lock이 걸려서 생기는데 이 원인을 해결해주면 된다.


[Qeury]

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


[Result]

     SID    SERIAL#
------- ----------
    2391       18325


Lock를 하고 있는 대상의 데이터가 나오면

ALTER system kill session '2391, 18325';

와 같은 쿼리를 날려서 원인이 되는 세션을 날려버리면 된다.

출처 - http://www.secret.pe.kr/6323

댓글을 달아 주세요