DBMS_AQADM

DBMS_AQADM 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명합니다.

개요

DBMS_AQADM 패키지는 Tibero의 Advanced Queuing 기능을 구성하고 관리하는 데 사용할 수 있는 프러시저와 함수를 제공합니다.

프러시저와 함수

본 절에서는 DBMS_AQADM 패키지에서 제공하는 프러시저와 함수를 알파벳 순으로 설명합니다.

ADD_SUBSCRIBER

대상 queue에 디폴트 구독자를 추가하는 프러시저입니다. 메시지를 enqueue할 때 수신자 목록을 대상으로 하거나 디폴트 구독자 목록을 대상으로 하여 enqueue할 수 있습니다.

이 프러시저는 복수 소비자 queue에 대해서만 수행이 가능하고 프러시저가 실행되면 이를 포함한 트랜잭 션은 커밋됩니다. 프러시저가 성공적으로 종료된 이후의 enqueue는 해당 디폴트 구독자를 반영합니다.

ADD_SUBSCRIBER 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

DBMS_AQADM.ADD_SUBSCRIBER
(
     queue_name      IN       VARCHAR2,
     subscriber      IN       DBMS_AQ.AQ$_AGENT
);
  • 파라미터

파라미터
설명

queue_name

추가할 queue의 이름

subscriber

구독자를 명시하는 DBMS_AQ.AQ$_AGENT 타입의 agent

  • 예제

CREATE_QUEUE

대상 queue 테이블에 queue를 생성하는 프러시저입니다. CREATE_QUEUE로 queue를 생성한 후 START_QUEUE를 호출하여 queue를 활성화시킬 수 있습니다. 디폴트로 enqueue와 dequeue 모두 비활성화된 채로 queue가 생성됩니다.

CREATE_QUEUE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

queue_name

  • 생성할 queue의 이름

  • 스키마 내에서는 유일해야 하며 일반적인 객체의 이름을 부여할 때와 동일한 규칙이 적용

queue_table

  • queue를 저장할 queue 테이블의 이름

queue_comment

  • queue에 대한 사용자 지정 주석을 명시

  • 이후 정적 뷰를 통해 조회가 가능

  • 예제

CREATE_QUEUE_TABLE

queue 테이블을 생성하는 프러시저입니다. queue 테이블을 생성할 때 dequeue 순서를 결정하는 정렬 키를 지정할 수 있습니다. 저장 데이터 타입은 현재 RAW 만 가능합니다.

CREATE_QUEUE_TABLE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

queue_table

  • 생성할 queue 테이블의 이름

queue_payload_type

  • 저장할 사용자 데이터의 타입을 지정

  • 현재는 RAW 만 가능

storage_clause

  • 저장 파라미터를 지정

  • queue 테이블을 생성하기 위하여 CREATE TABLE 문을 수행할 때 이 파라미터가 포함

sort_list

  • 오름차순으로 정렬할 정렬 키 컬럼을 지정

  • 이 파라미터를 명시되지 않으면 FIFO 순서와 동일하게 enqueue된 시간의 오름차순으로 정렬(ENQ_TIME)

  • 다음과 같은 형식으로 지정하며 가능한 컬럼 이름은 PRIORITY와 ENQ_TIME

  • 두 컬럼이 동시에 명시되면 앞에 나온 컬럼값이 우선되어 정렬됨

sort_column_1[,sort_column_2]

위와 같이 정렬 순서를 지정하여 queue 테이블을 생성하면 정렬 순서는 바꿀 수 없고 queue 테이블에 생성되는 모든 queue는 동일한 정렬 순서를 가짐

단, dequeue할 때 msgid 또는 correlation을 지정하면 정렬 순서를 무시하고 특정 메시지를 dequeue할 수 있음

multiple_consumers

  • FALSE : 단일 소비자 queue를 저장하는 queue 테이블을 만듦(기본값)

  • TRUE : 복수 소비자 queue를 저장하는 queue 테이블을 만듦

comment

  • queue table에 대한 사용자 지정 주석을 명시

  • 이후 정적 뷰를 통해 조회가 가능

  • 예제

DROP_QUEUE

기존의 queue를 제거하는 프러시저입니다. STOP_QUEUE를 통해 enqueue와 dequeue가 모두 비활성화 되기 전에는 DROP_QUEUE의 수행은 허용되지 않습니다. queue가 제거되면 queue에 저장된 모든 데이터는 같이 삭제됩니다.

DROP_QUEUE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

queue_name

제거할 queue의 이름

  • 예제

DROP_QUEUE_TABLE

기존의 queue 테이블을 제거하는 프러시저입니다. queue 테이블을 제거하기 전에 queue 테이블 내의 모든 queue를 정지시키고 제거한 이후에만 queue 테이블을 제거할 수 있습니다. 그러나 force 옵션을 주면 이러한 동작이 자동으로 수행됩니다.

DROP_QUEUE_TABLE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

queue_table

제거할 queue 테이블의 이름

force

  • FALSE : queue가 테이블 내에 존재할 경우 제거되지 않음 (기본값)

  • TRUE : 테이블 내의 모든 queue가 자동으로 정지되고 제거됨

  • 예제

GRANT_SYSTEM_PRIVILEGE

Tibero Advanced Queuing 시스템 특권을 사용자 또는 역할에게 부여하는 프러시저입니다. 부여 가능한 특 권은 ENQUEUE_ANY, DEQUEUE_ANY, MANAGE_ANY입니다. 단, 처음에는 SYS 사용자 또는 DBA 역할 이 부여된 사용자만이 이 프러시저를 수행할 수 있습니다.

DBMS_AQADM 패키지의 프러시저를 수행하기 위해서는 DBMS_AQADM 패키지에 대해 EXECUTE 권한이 있어야 합니다. 마찬가지로 dequeue와 enqueue의 수행을 위해서는 DBMS_AQ 패키지에 대해 EXECUTE 권한이 있어야 합니다.

DBMS_AQADM 패키지의 프러시저가 다루는 객체가 프러시저를 호출한 스키마에 속할 경우 이 패키지에 대해 EXECUTE 권한만 있으면 더 이상의 특권이 필요 없이 프러시저의 수행이 허용됩니다. 마찬가지로 자 기 자신의 스키마에 생성한 queue에 대해 enqueue 또는 dequeue를 수행할 때는 DBMS_AQ 패키지에 대 해 EXECUTE 권한만 있으면 수행이 허용됩니다.

GRANT_SYSTEM_PRIVILEGE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

privilege

부여할 Tibero Advanced Queuing 시스템 특권을 지정부여 가능한 특권은 다음과 같음

  • ENQUEUE_ANY : 데이터베이스의 어떤 queue에 대해서도 enqueue를 수행할 수 있음

  • DEQUEUE_ANY : 데이터베이스의 어떤 queue에 대해서도 dequeue를 수행할 수 있음

  • MANAGE_ANY : 데이터베이스의 어떤 스키마 객체에 대해서도 DBMS_AQADM 프러시저를 수행할 수 있음

grantee

부여 받을 대상(사용자, 역할, PUBLIC)을 명시

admin_option

시스템 특권을 ADMIN 옵션과 함께 부여할지를 지정

ADMIN 옵션과 함께 특권이 부여되면 부여받은 대상은 이 프러시저를 호출 하여 권한을 다른 사용자 또는 역할에 부여해줄 수 있음. (기본값: FALSE)

  • 예제

REMOVE_SUBSCRIBER

디폴트 구독자를 해당 queue에서 제거하는 프러시저입니다. 이 프러시저가 실행되면 이를 포함한 트랜잭션 은 커밋되며 구독자와 관련된 메시지 및 정보는 삭제됩니다.

REMOVE_SUBSCRIBER 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

queue_name

queue의 이름

subscriber

제거할 agent를 명시

(타입: DBMS_AQ.AQ$_AGENT)

  • 예제

REVOKE_SYSTEM_PRIVILEGE

Tibero Advanced Queuing 시스템 특권을 사용자 또는 역할로부터 회수하는 프러시저입니다. 회수 가능한특권은 ENQUEUE_ANY, DEQUEUE_ANY, MANAGE_ANY입니다. 단, 시스템 특권의 ADMIN 옵션만 선택 적으로 회수하는 것은 불가능합니다.

REVOKE_SYSTEM_PRIVILEGE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

privilege

  • 회수할 Tibero Advanced Queuing 시스템 특권을 지정

회수 가능한 특권은 다음과 같음

단, ADMIN 옵션만 선택적으로 회수하는 것은 불가능

  • ENQUEUE_ANY

  • DEQUEUE_ANY

  • MANAGE_ANY

grantee

  • 회수할 대상(사용자, 역할, PUBLIC)을 명시

  • 예제

START_QUEUE

해당 queue의 enqueue 또는 dequeue 기능을 활성화하는 프러시저입니다. queue를 생성하고 나면START_QUEUE 프러시저를 통해 queue를 활성화해야 하며, 디폴트로 enqueue와 dequeue가 동시에 활성화됩니다. 이 동작은 종료와 함께 즉시 반영되며 포함하고 있는 트랜잭션에 영향을 주지 않습니다.

START_QUEUE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

queue_name

활성화할 queue의 이름을 명시

enqueue

enqueue 기능을 활성화 할지를 명시 - TRUE : 활성화 됨 (기본값) - FALSE : 이전의 설정을 유지

dequeue

dequeue 기능을 활성화 할지를 명시 - TRUE : 활성화 됨 (기본값 - FALSE : 이전의 설정을 유지합니다.

  • 예제

STOP_QUEUE

해당 queue의 enqueue 또는 dequeue 기능을 비활성화하는 프러시저입니다. 디폴트로 enqueue와 dequeue 를 동시에 비활성화시키며, queue에 대해 트랜잭션이 진행 중일 때에는 queue를 비활성화시킬 수 없습니다.이 동작은 종료와 함께 즉시 반영되며 포함하고 있는 트랜잭션에 영향을 주지 않습니다.

STOP_QUEUE 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

queue_name

비활성화할 queue의 이름을 명시

enqueue

enqueue 기능을 비활성화할지를 명시 - TRUE : 비활성화 됨 (기본값) - FALSE : 이전의 설정을 유지

dequeue

dequeue 기능을 비활성화할지를 명시 - TRUE : 비활성화 됨 (기본값) - FALSE : 이전의 설정을 유지

wait

현재 진행 중인 트랜잭션이 있다면 그것을 기다릴 것인지를 지정 - TRUE : 트랜잭션을 기다리며 해당 queue에 대해 더이상의 추가적인 en queue 또는 dequeue가 수행되지 않음 (기본값) - FALSE : 트랜잭션이 진행 중일 경우 에러를 반환하며 즉시 리턴

  • 예제

Last updated