2007/04/26 14:26
http://blog.naver.com/xacti/80037278371
ORA-00054 발생했을때 처리하는 방법.
여러가지 문제가 있을수 있지만...
Commit을 안했다던지... 무슨 작업중이라던지... 이유는 다양합니다.
Truncate같은 명령은... ORA-00054라는 에러라도 출력하지만...
DML(Delete) 문장 실행시 그냥 멈쳐버립니다.ㅡㅡ;;;
오라클 재시작!!! 하면 간다하게 처리됩니다.^^;
하지만 DB 특성상 재시작 할수 없는 경우가 많죠~
그때는 Lock걸린 세션을 찾아서.. Kill해주면 됩니다.
다음 명령어로 검색.
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';
SID SERIAL#
------- ----------
2715 40427
Kill은 이렇게...
alter system kill session '2715,40427';
[출처] Table Lock 걸렸을 때 처리하는 법 (ORA-00054)|작성자 핑크
ROW LOCK (TX) TABLE LOCK (TM)
RS : ROW SHARE LOCK SELECT .. FROM .. WHERE .. FOR UPDATE OF .. ; 이나 단, SELECT .. FROM FOR UPDATE OF 명령에 의해 WHERE 조건에 걸린 ROW 에 대해서는 SELECT .. FOR UPDATE OF; 문장은 테이블에는 RS LOCK 이므로 에러는 안나지만,
RX : ROW EXCLUSIVE LOCK UPDATE ..;, INSERT INTO ..;, DELETE FROM ..; 이나
S : SHARE LOCK LOCK .. IN SHARE MODE; 에 의해 테이블에 생긴 LOCK 이다.
SRX : SHARE ROW EXCLUSIVE LOCK TABLE .. IN SHARE ROW EXCLUSIVE MODE; 에 의해 테이블에 생긴 LOCK 이다.
X : EXCLUSIVE LOCK TABLE .. IN EXCLUSIVE MODE; 에 의해 테이블에 생긴 LOCK 이다. [출처] [oracle]table lock 종류|작성자 도날도 |