AQ_ADMINISTRATOR_ROLE
AQ_USER_ROLE
CONNECT system/password@tsh9i CREATE USER aq_admin IDENTIFIED BY aq_admin DEFAULT TABLESPACE users; GRANT connect TO aq_admin; GRANT create type TO aq_admin; GRANT aq_administrator_role TO aq_admin; ALTER USER aq_admin QUOTA UNLIMITED ON users; CREATE USER aq_user IDENTIFIED BY aq_user DEFAULT TABLESPACE users; GRANT connect TO aq_user; GRANT aq_user_role TO aq_user;
CONNECT aq_admin/aq_admin@tsh9i CREATE OR REPLACE TYPE event_msg_type AS OBJECT ( name VARCHAR2(10), current_status NUMBER(5), next_status NUMBER(5) ); / GRANT EXECUTE ON event_msg_type TO aq_user;
DBMS_AQADM
CONNECT aq_admin/aq_admin@tsh9i EXECUTE DBMS_AQADM.create_queue_table ( - queue_table => 'aq_admin.event_queue_tab', - queue_payload_type => 'aq_admin.event_msg_type'); EXECUTE DBMS_AQADM.create_queue ( - queue_name => 'aq_admin.event_queue', - queue_table => 'aq_admin.event_queue_tab'); EXECUTE DBMS_AQADM.start_queue ( - queue_name => 'aq_admin.event_queue', - enqueue => TRUE);
CONNECT aq_admin/aq_admin@tsh9i EXECUTE DBMS_AQADM.grant_queue_privilege ( - privilege => 'ALL', - queue_name => 'aq_admin.event_queue', - grantee => 'aq_user', - grant_option => FALSE);
DBMS_AQ.ENQUEUE
CONNECT aq_user/aq_user@tsh9i DECLARE l_enqueue_options DBMS_AQ.enqueue_options_t; l_message_properties DBMS_AQ.message_properties_t; l_message_handle RAW(16); l_event_msg AQ_ADMIN.event_msg_type; BEGIN l_event_msg := AQ_ADMIN.event_msg_type('REPORTER', 1, 2); DBMS_AQ.enqueue(queue_name => 'aq_admin.event_queue', enqueue_options => l_enqueue_options, message_properties => l_message_properties, payload => l_event_msg, msgid => l_message_handle); COMMIT; END; /
DBMS_AQ.DEQUEUE
CONNECT aq_user/aq_user@tsh9i SET SERVEROUTPUT ON DECLARE l_dequeue_options DBMS_AQ.dequeue_options_t; l_message_properties DBMS_AQ.message_properties_t; l_message_handle RAW(16); l_event_msg AQ_ADMIN.event_msg_type; BEGIN DBMS_AQ.dequeue(queue_name => 'aq_admin.event_queue', dequeue_options => l_dequeue_options, message_properties => l_message_properties, payload => l_event_msg, msgid => l_message_handle); DBMS_OUTPUT.put_line ('Event Name : ' || l_event_msg.name); DBMS_OUTPUT.put_line ('Event Current Status: ' || l_event_msg.current_status); DBMS_OUTPUT.put_line ('Event Next Status : ' || l_event_msg.next_status); COMMIT; END; /
DEQUEUE_OPTIONS_T
MESSAGE_PROPERTIES_T