Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

  

Table of Contents

개요 

...

 SQL 실행 도중 다음과 같이 오류가 나서 원하는 작업을 못할 때가 있습니다.

...

$ altierr -w "lock timeout"
0x11075 ( 69749) smERR_ABORT_smcExceedLockTimeWait The transaction exceeds lock timeout specified by user.
# *Cause: The transaction failed to lock the object.
# *Action: Please abort the transaction.

 



버전  

...

  ALTIBASE HDB 4 이상




 

발생원인 

...

SQL 실행 도중 다음과 같이 오류가 나서 원하는 작업을 못할 때가 있습니다 

 
위의 오류코드 내용과 같이 해당 객체 - 테이블이나 뷰, 저장 프로시져 등 - 에 대해
  lock을 잡을 수가 없다는 오류입니다.

테이블에 접근하는 모든 세션은 해당 테이블에 LOCK을 잡고 접근하게 됩니다
.
즉 그 테이블에 SELECT/INSERT/UPDATE 등의 DML을 수행하거나 ALTER TABLE 등의 DDL을 수행하는 등의

작업을 누군가 하고 있을 때 DROP TABLE을 수행하면 이전 작업이 commit/rollback할 때 까지 기다리게 됩니다
.

이 경우, 사용자가 없는지 확인하고 이전 작업이 commit할 때가지 기다리거나
, 세션을 강제로 끊을 수 있습니다
아래
예와(조치방법)  같이 alter database 문을 사용하면 세션을 강제로 끊을 수 있습니다



 

 

조치방법 

...

  * lock 정보 확인 
 

Code Block
select T.table_name, X.lock_desc  from system_.sys_tables_ T, v$lock X  where T.table_oid = X.table_oid  and T.table_name = 'T1'; //T1 테이블 LOCK 정보 확인

...

Code Block
 $ isql -sysdba -u sys -p manager 
 iSQL(sysdba)>
 alter database mydb session close 159; 
 alter database mydb session close 160; 
 alter database mydb session close 161; 
 alter database mydb session close 162; -- 위의 SQL 결과를 copy/paste 해서 실행합니다.


 

참고 

...

  alter database 명령어로 session을 종료해도 해당 세션외의 다른 부분에는 영향을 미치지 않습니다.

...