DS's『 행복합시다 』

Carpe Programming/oracle

[lock 세션 kill] oracle lock session kill, ora-00054

nolite 2013. 2. 20. 11:17

ora-00054

- resource budy and acquire with NOWAIT specified

 

Table이 Lock 걸린 경우, 사용자가 거기에다가 DML, DDL 등을 실행하려 하면 나타나는 에러이다.

그렇다면 Table Lock이 왜 걸리느냐... 여러 이유가 있겠지만,  한참동안 커밋을 해주지 않았더니, Lock에 걸렸다.

commit한 후 다시 DML을 시도하니 잘되더라는..

commit을 할 수 없거나, 해서는 안될 경우!

제일 빠른 방법은 오라클 인스턴스를 재시작하는 것이지만,, 그것조차 허락되지 않는 상황일 경우 아래와 같이 lock 걸린 세션을 찾아 죽여준다-_-ㅋ

 

 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'; -- Lock 걸린 테이블 명 입력

 

위의 table_name에 lock 이 걸린 table 명을 적어주고 쿼리를 실행시키면 대략 다음과 같은 결과가 나타난다.

--------------------

SID | SERIAL#

--------------------

123 | 456

위 세션을 kill 시켜주면 상황 종료~!

 

> alter system kill session '123,456'; -- SID와 Serial#를 쉼표로 붙여서 써준다.

 

[참조] - http://blog.naver.com/infinite23?Redirect=Log&logNo=80057478428

 

 

 

728x90