FAQ
The transaction has exceeded the lock timeout specified by the user.
분류 에러메시지 등록일 2013-08-05 조회수 3582
원인1. 
DDL 문 수행 시 해당 object 에 먼저 lock 걸려있는 경우 lock을 획득할 수 없어 발생할 수 있다. 
 
세션 A.
iSQL> autocommit off; 
Set autocommit off success. 
 
iSQL> update test_emp_tbl set emp_no = 10;         
 
세션 B
SQL> truncate table test_emp_tbl;                        
[ERR-11075 : The transaction has exceeded the lock timeout specified by the user.]
 
조치
       근본적인 해결 방법은 대량의 변경 연산을 하지 않는 것이다. 
필요한 경우 작은 단위로 여러 번 나누어 수행한다. 
 
iSQL> update test_emp_tbl set emp_no = 10 limit 100;


 


원인 2. 
다량의 변경 연산 시 로그 파일 크기가 LOCK_ESCALATION_MEMORY_SIZE 를 초과하면 테이블 레벨 X_LOCK 이 잡힌다. 
이 때 다른 세션에서 해당 테이블에 접근하려고 하면 에러가 발생 할 수 있다
 

조치

       이 역시 근본적인 해결 방법은 대량의 변경 연산을 하지 않는 것이다.
 

원인 3.
       select for update wait n 혹은 select for update nowait 를 사용한 select 문은 해당 레코드에 대해 lock을 걸고 수행한다.
       그런데 동일 테이블에 다른 세션에서 먼저 lock 을 획득한 경우 lock 을 획득하지 못해 에러가 발생할 수 있다. 
 
세션A            
       iSQL> autocommit off;
       Set autocommit off success. 
iSQL> update test_emp_tbl set emp_no = 10; 


 
세션B
       iSQL> select * from
test_emp_tbl for update wait 1;
       [ERR-11075 : The transaction has exceeded the lock timeout specified by the user.]

iSQL> select * from test_emp_tbl for update nowait;
       [ERR-11075 : The transaction has exceeded the lock timeout specified by the user.]  


 
원인 4. 
      이중화 환경에서 이중화로 넘어온 트랜잭션이 위 경우에 해당하여 altibase_rp.log 에 발생하는 경우도 있다.

목록