문서유형ㅣ장애해결
분야ㅣ모니터링/점검
적용제품버전ㅣ7FS02PS
오류코드ㅣ12033,12034
문서번호ㅣTMOTS005
현상
서비스 운영 중 alter 문 수행 시, ‘JDBC-12033:Lock acquisition failed in NOWAIT mode’ 에러가 발생합니다.
원인
DDL 수행 시 DML X lock 적용 안되는 경우 JDBC-12033 에러가 발생하며 wait를 진행하지 않습니다.
해결
Table에 대한 lock을 설정해 alter문을 수행하도록 합니다.
참고현재 상황에서는 먼저 lock 적용 트랜잭션이 대기 중인 것으로 보이므로 blocking 해소를 위해 commit/rollback 가이드를 제공합니다.
Session 2 | Session 2 |
|---|---|
create table test01 (id number); | |
insert into test01 values (1); | Lock table test01 in exclusive mode wait 10; → insert가 commit 되기 전까지 10초간 wait. 10초가 지나면 time out으로 lock 설정되지 않고 ‘12034’ 에러 발생 (TBR-12034: Lock acquisition timed out in WAIT mode.) → 다른 세션이 table lock 설정되어 있으면 Lock획득불가 |
commit; | |
Locked. | |
SQL> alter table test01 add id2 number; Table 'TEST01' altered. → DDL의 경우, 자동으로 commit 되므로 별도의 commit 수행 불필요 | |
| SQL> commit; Commit completed. | |
| SQL> insert into test01 values (2, 1) 1 row inserted. | |
| SQL> commit; Commit completed. | |
| SQL> select * from test01; ID ID2 1 2 1 2 rows selected. | |
Lock 설정된 session이 끊어지면 Lock도 자동 해제 |