콘텐츠로 이동

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

결과값#

저장 프로시저이므로 결과값을 반환하지 않는다.

예외#

예외를 발생시키지 않는다.