运行 授予对 sys 对象的执行查询

Run grant execute query for sys object

我需要你的认真帮助! 我需要 运行 向我的一个用户多次授予执行 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 Error: ORA-20199: Error in rdsadmin_util.grant_sys_object.

ORA-20900: You do not have permission to grant: to SYS object: DBMS_SYSTEM ORA-06512: at "RDSADMIN.RDSADMIN_UTIL", line 234 ORA-20900:

You do not have permission to grant: to SYS object: DBMS_SYSTEM ORA-06512: at line 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 中的角色授予的权限。为此,必须直接向用户授予权限。

"there is so many limitation within amazon RDS service ... it is such a huge disappointment from this service. "

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