如何执行预言机DMBS_AQ.代表不同用户注册



一个特权调度程序用户 - user1 接收电子邮件通知,而另外两个(用户 2、用户 3)没有。

我想在 user3 架构上执行下面的代码,我们在 user2 上成功尝试了这个(代码直接在具有临时sys.dbms_aq访问权限的模式上执行),所以他现在会收到他的通知。在 user1 上为机器人用户代理启用数据库访问。

所以正如你所看到的,我知道"什么"解决了问题,但不知道如何去做:-)

问题是 - 我们没有直接访问第二个帐户(user3)如何代表user3执行此代码?

declare  
  reginfo1    sys.aq$_reg_info;  
  reginfolist sys.aq$_reg_info_list;  
begin  
  reginfo1    := sys.aq$_reg_info('SYS.SCHEDULER$_EVENT_QUEUE:SCHED$_AGT2$_X',  
                                  1,  
                                  'plsql://SYS.SCHEDULER$_JOB_EVENT_HANDLER',  
                                  null);  
  reginfolist := sys.aq$_reg_info_list(reginfo1);  
  dbms_aq.register(reginfolist, 1);  
end; 

已经尝试在 user3 上创建过程并立即执行匿名块,但它仍然向 USER# 1 注册,而不是 3 DBA_QUEUE_SUBSCRIBERS。

Unix 上的数据库版本为 11.2.0.3.0。

这是我

的工作解决方案

>sqlplus user1  
Connected to:  
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production  
SQL> grant execute on sys.dbms_aq to user1;  
Grant succeeded.  
SQL> alter user user3 grant connect through user1;  
User altered.  
SQL> connect user1[user3]  
Enter password:  
Connected.  
SQL> create or replace procedure sched_not_add_q as  
 2    reginfo1    sys.aq$_reg_info;  
 3    reginfolist sys.aq$_reg_info_list;  
 4  begin  
 5    reginfo1    := sys.aq$_reg_info('SYS.SCHEDULER$_EVENT_QUEUE:SCHED$_AGT2$_3',  
 6                                    1,  
 7                                    'plsql://SYS.SCHEDULER$_JOB_EVENT_HANDLER',  
 8                                    null);  
 9    reginfolist := sys.aq$_reg_info_list(reginfo1);  
10    dbms_aq.register(reginfolist, 1);  
11  end;  
12  /  
Procedure created.  
SQL> exec sched_not_add_q;  
PL/SQL procedure successfully completed.  
SQL> drop procedure sched_not_add_q;  
Procedure dropped.  
SQL> connect user1  
Connected.  
SQL> revoke execute on sys.dbms_aq from user3;  
Revoke succeeded.  
SQL> alter user user3 revoke connect through user1;  
User altered.  
SQL> exit;  
> 

构思基础:http://www.oracle.com/technetwork/issue-archive/2013/13-mar/o23asktom-1906478.html

最新更新