DBMS LOCK
DBMS_LOCK#
DBMS_LOCK 패키지는 잠금(Lock)을 관리하는 인터페이스를 제공한다. 잠금을 요청하고, 해제할 수 있다.
DBMS_LOCK 패키지를 구성하는 프로시저와 함수는 아래의 표와 같이 제공한다.
| 프로시저 및 함수 | 설명 | 
|---|---|
| RELEASE | 사용자 잠금을 해제한다. | 
| REQUEST | 사용자 잠금을 요청한다. | 
| SLEEP | 설정한 시간만큼 세션을 쉬게 한다. | 
| SLEEP2 | 설정한 시간만큼 세션을 쉬게 한다. | 
관련 프로퍼티#
DBMS_LOCK 관련 프로퍼티를 altibase.properties에 설정할 수 있다.
- 
USER_LOCK_POOL_INIT_SIZE
 - 
USER_LOCK_REQUEST_CHECK_INTERVAL
 - 
USER_LOCK_REQUEST_LIMIT
 - 
USER_LOCK_REQUEST_TIMEOUT
 
더 자세한 정보는 General Reference를 참고한다.
RELEASE#
사용자 잠금을 해제하는 함수이다.
구문#
INTEGER variable :=
  DBMS_LOCK.RELEASE(id IN INTEGER);
파라미터#
| 이름 | 입출력 | 데이터 타입 | 설명 | 
|---|---|---|---|
| id | IN | INTEGER | Lock ID 0 ~ 1073741823 | 
결과값#
결과값은 아래와 같다.
- 
0 : Success
 - 
3 : Parameter error
 - 
4: Already own lock specified by id
 
예외#
이 함수는 예외를 발생시키지 않지만, 실패할 경우 0이 아닌 다른 값을 반환한다.
예제#
ID가 0인 잠금을 해제한다.
iSQL> var v1 integer;
iSQL> v1 := dbsm_lock.release(0);
REQUEST#
사용자 잠금을 요청하는 함수이다.
구문#
INTEGER variable :=
  DBMS_LOCK.REQUEST(
    id IN INTEGER,
    lockmode IN INTEGER DEFAULT x_mode,
    timeout IN INTEGER DEFAULT MAXWAIT,
    release_on_commit IN BOOLEAN DEFAULT FALSE);
파라미터#
| 이름 | 입출력 | 데이터 타입 | 설명 | 
|---|---|---|---|
| id | IN | INTEGER | Lock ID 0 ~ 1073741823 | 
| lockmode | IN | INTEGER | 호환성을 위한 파라미터이며 무시된다. x_mode(exclusive lock)만 지원된다. | 
| timeout | IN | INTEGER | 호환성을 위한 파라미터이며 무시된다. 기본값은 MAXWAIT이다. | 
| release_on_commit | IN | INTEGER | 호환성을 위한 파라미터이며 무시된다. 기본값은 FALSE이다. | 
결과값#
결과값은 아래와 같다.
- 
0 : Success
 - 
1 : Timeout
 - 
3 : Parameter error
 - 
4: Already own lock specified by id
 
예외#
이 함수는 예외를 발생시키지 않지만, 실패할 경우 0이 아닌 다른 값을 반환한다.
예제#
ID가 0인 잠금을 요청한다.
iSQL> var v1 integer;
iSQL> v1 := dbsm_lock.request(0);
SLEEP#
설정한 시간만큼 세션을 쉬게 하는 프로시저이다.
구문#
DBMS_LOCK.SLEEP(seconds IN INTEGER);
파라미터#
| 이름 | 입출력 | 데이터 타입 | 설명 | 
|---|---|---|---|
| second | IN | INTEGER | 세션의 쉬는 시간(초) 최댓값은 없다. | 
결과값#
저장 프로시저이므로 결과값을 반환하지 않는다.
예외#
예외를 발생시키지 않는다.
SLEEP2#
설정한 시간만큼 세션을 쉬게 하는 프로시저이다.
구문#
DBMS_LOCK.SLEEP2(seconds IN INTEGER, microseconds IN INTEGER);
파라미터#
| 이름 | 입출력 | 데이터 타입 | 설명 | 
|---|---|---|---|
| second | IN | INTEGER | 세션의 쉬는 시간(초) 최댓값은 없다. | 
| microseconds | IN | INTEGER | 세션이 쉬는 시간(마이크로초) 최댓값은 999999 | 
결과값#
저장 프로시저이므로 결과값을 반환하지 않는다.
예외#
예외를 발생시키지 않는다.