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 |
결과값#
저장 프로시저이므로 결과값을 반환하지 않는다.
예외#
예외를 발생시키지 않는다.