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

