运行sys对象的grant execute查询

时间:2017-03-28 07:39:32

标签: oracle amazon-web-services amazon-ec2 oracle11g amazon-rds

我需要你的认真帮助! 我需要为我的一个用户运行sys对象的多个grant执行查询。

grant   execute on SYS.dbms_system  to $(User);
grant   execute on SYS.dbms_flashback   to $(User);

但是,正如我所知,为了向Oracle RDS的sys对象授予权限,我们需要使用过程rdsadmin.rdsadmin_util.grant_sys_object来实现。

我构建了我的新查询,如下所示:

begin
    rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SYSTEM', '$(User)');
end;

但是,我遇到了错误,

  

SQL错误:ORA-20199:rdsadmin_util.grant_sys_object出错。

     

ORA-20900:您无权授予:SYS对象:DBMS_SYSTEM ORA-06512:at" RDSADMIN.RDSADMIN_UTIL",第234行ORA-20900:

     

您无权授予SYS对象:DBMS_SYSTEM ORA-06512:第2行

任何人都有线索如何解决这个问题?请帮忙!

1 个答案:

答案 0 :(得分:2)

假设您已正确运行该过程,并且您已在呼叫中包含execute权限。这个错误

ORA-20900: You do not have permission to grant: to SYS object: DBMS_SYSTEM 

表示您没有足够的权限授予DBMS_SYSTEM权限。你可能认为你有这种特权,但你不是。

两种可能的解释:

  • 您授予的用户未获得WITH GRANT OPTION的权限,并且缺少GRANT ANY PRIVILEGE权力角色。
  • 您的授权用户通过角色获得了特权。由于Oracle安全模型,我们无法使用通过PL / SQL中的角色授予的权限。要执行此操作,必须直接向用户授予权限。
  

"亚马逊RDS服务有很多限制......这项服务令人非常失望。 "

IaaS和PaaS之间的区别。 Amazon RDS产品是托管数据库即服务。因此,锁定SYS等是非常合理的.SYS用于安装,配置和修补数据库,这是亚马逊承担的任务。 (许多地方使用SYS来执行常规DBA任务:他们不应该这样做。)如果您想为自己安装,配置和修补,那么您需要一种不同风格的云服务。