이 문제점에서 설명한 것과 동일한 문제가 있습니다 : Grant permission to queues to another schema in oracle.Oracle Advanced Queue가 존재하지 않습니다 다른 스키마
그러나 다른 사용자에게 주어진 권한은 전혀 작동하지 않습니다.
내 큐 :
DBMS_AQADM.create_queue_table (
queue_table => 'event_queue_tab',
queue_payload_type => 't_event_queue_payload',
multiple_consumers => TRUE,
comment => 'Queue Table For Event Messages',
secure => false);
-- Create the event queue.
DBMS_AQADM.create_queue (queue_name => 'event_queue',
queue_table => 'event_queue_tab');
-- Start the event queue.
DBMS_AQADM.start_queue (queue_name => 'event_queue');
스키마 USER1
를 사용하여 생성으로이 큐.
PROCEDURE proc1
IS
PRAGMA AUTONOMOUS_TRANSACTION;
l_enqueue_options DBMS_AQ.ENQUEUE_OPTIONS_T;
l_message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
l_message_handle RAW (16);
l_queue_msg t_event_queue_payload;
BEGIN
l_queue_msg := t_event_queue_payload ('give_me_a_prod');
DBMS_AQ.enqueue (queue_name => 'event_queue',
enqueue_options => l_enqueue_options,
message_properties => l_message_properties,
payload => l_queue_msg,
msgid => l_message_handle);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (
SQLERRM || ' - ' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
END proc1;
내가 특정 역할 (ROLE1)에 의해
pkg1
을 실행할 수있는 권한이 두 번째 스키마 USER2가이 스키마에서, 나는 그것을 호출 절차, 그 대기열과 패키지
pkg1
있습니다. 정말 시작 해요
BEGIN
DBMS_AQADM.grant_queue_privilege (privilege => 'ALL',
queue_name => 'USER1.event_queue',
grantee => 'USER2',
grant_option => TRUE);
END;
방법 Ad.Queues의 작품을 이해하기 : 나는 USER1에 있지만 성공하지 않고이 권한 명령을 실행 한
ORA-24010: QUEUE USER2.EVENT_QUEUE does not exist - ORA-06512: at "SYS.DBMS_AQ", line 180
ORA-06512: at "USER1.PKG1", line 1808
: 그는 PROC1를 호출 할 때, 다음 오류가 발생 . 내가 여기서 뭔가를 놓치고 있니? 감사.
EDIT1 :이 큐에 대한 권한 부여 부여 후 :
SELECT grantee,
owner,
name,
grantor,
enqueue_privilege,
dequeue_privilege
FROM queue_privileges
WHERE name = upper('event_queue');
ROLE1 USER1 EVENT_QUEUE USER1 1 1
USER2 USER1 EVENT_QUEUE USER1 1 1
정말요? 그저 단순한가? :) 고마워, 정말 문제를 해결. 나 앞에서 해결책이있는 문제가 너무 많은 시간입니다. 감사. – milheiros
문제 없습니다. 도와 줄 수있어서 기뻐. –