【问题标题】:Run grant execute query for sys object对 sys 对象运行授权执行查询
【发布时间】:2017-03-29 13:20:12
【问题描述】:

我在这里需要您的认真帮助! 我需要对我的一位用户运行 sys 对象的多个授权执行查询。

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:在“RDSADMIN.RDSADMIN_UTIL”,第 234 行 ORA-20900:

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

有人知道我该如何解决这个问题吗?请帮忙!

【问题讨论】:

  • 你是在SYS用户下运行那个程序吗?
  • 没有。原因是因为 amazon rds 锁定了 SYS 用户。但是,我确实有权限执行普通 DBA 任务的用户,请参考docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
  • 根据文档,您的声明应如下所示-begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'DBMS_SYSTEM', p_grantee => 'USER', p_privilege => 'EXECUTE' ); end;。我认为您错过了想要授予用户的特权。
  • 它实际上和我的查询一样。我确实再次运行了您的查询,但仍然出现权限不足错误。请帮忙!

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


【解决方案1】:

假设您已正确运行该过程并且您已在调用中包含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 用于安装、配置和修补数据库,这些都是 Amazon 承担的任务。 (许多地方使用 SYS 来执行常规 DBA 任务:它们不应该。)如果您想自己进行安装、配置和修补,那么您需要一种不同风格的云服务。

【讨论】:

  • 感谢您的回答。我想知道,如果亚马逊 RDS 服务中有这么多限制(锁定 SYS,没有授予任何特权角色来授予用户),那么这项服务令人非常失望。你怎么看,APC?
  • @BrianKoey 我遇到了同样的错误。您有任何解决方法或答案吗?
  • @AjinkyaBapat 如果您想完全控制权限,我更喜欢您使用 EC2 实例并从头开始设置 oracle DB,而不是依赖 amazon rds
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多