AWS RDS - Oracle - 授予对 sys 的权限

AWS RDS - Oracle - Grant permissions on sys

我正在尝试创建角色并授予 select 对 sys.dba_objects 的权限。 这是我的 sql:

grant select on sys.dba_objects to my_role
grant select on sys.dba_objects to my_role;

在 RDS 上,我收到以下错误: 错误:ORA-01031:权限不足

我看到RDS有一个专门的存储过程来授予sys权限。我试过了:

call rdsadmin.rdsadmin_util.grant_sys_object('SYS.REGISTRY$HISTORY', 'my_role', 'select')

我得到的错误:

ORA-44003: invalid SQL name
ORA-06512: at "RDSADMIN.RDSADMIN_UTIL", line 248
ORA-44003: invalid SQL name
ORA-06512: at line 1

我不知道 AWS RDS,但 ORA-01031 听起来像是一个已知限制:通过角色授予的特权在 PL/SQL 过程中不起作用 - 您必须将它们直接授予用户。

尝试以下...首先,您需要使用 SYS 授予 rdsadmin select 和授予选项。

作为系统 使用授权选项将 DBA_objects 上的 select 授予 rdsadmin;

作为 rdsadmin

在 sys.dba_objects 上将 select 授予 my_role;

我是这样工作的: 1.删​​除了系统。像上面建议的前缀 2. 使用大写

示例:

call rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'ASSESSMENT_ROLE', 'SELECT');