lock_timeout_in_secs 값이 적용이 안됩니다.

by 태율아빠용 posted Jul 30, 2013

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
  linux 32bit
CUBRID Ver.
 9.1.0.0212
CUBRID TOOL Ver.
 CUBRID Query Browser 2013 빌드 0170  (64bit)
응용 환경(API)
  query browser

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

 

제가 오라클의 lock table 과 같은 작업이 필요해서요. 큐브리드에는 lock table이 없어서

테이블에 update 문으로 lock 이 걸리게 해서 먼저 lock을 건 작업이 커밋 또는 롤백이 될때까지 다른 세션에서 기다리도록 하려고 하는데요.

쿼리브라우저 두개 띄어놓고 테스트 하면 두번째 lock을 걸려는 세션에서 timeout으로 인해 lock 걸린 동안 기다리지 않고 바로 작업이 종료되 버리더라구요. 저는 두번째 세션에서 첫번째 세션의 작업이 끝날때 까지 기다리게 하고 싶은데요.

 

찾아보니 lock_timeout_in_secs 값을 -1로 주면 무한대로 timeout이 걸린다고 하던데 큐브리드매니저의 속성으로 확인해 봐도 값이 -1로 잘

설정되어 있거든요. 근데도 계속 그냥 자동 timeout되어 작업이 에러로 종료되어 버리네요.

 

쿼리 브라우저에서 SET TRANSACTION LOCK TIMEOUT INFINITE;를 먼저 실행하고 하면 timeout이 무한대로 제대로 동작 합니다.

 

근데 설정값으로 lock_timeout_in_secs = -1 이 되어 있는데도 쿼리 브라우저에서 왜 timeout이 무한대로 되지 않는건가요?

 

쿼리브라우저에서 실행해서 그런건가요? 그냥 jdbc 프로그램 짜서 하면 제대로 원하는대로 될까요? 답변 부탁 드립니다. ㅜㅜ


Articles