我正在尝试创建一个角色并在sys.dba_objects上授予select权限。 这是我的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
答案 0 :(得分:1)
这就是我的工作方式: 1.删除了sys。如上所述的前缀 2.使用大写
示例:
call rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'ASSESSMENT_ROLE', 'SELECT');
答案 1 :(得分:0)
我不知道AWS RDS,但ORA-01031听起来像是一个已知的限制:通过角色授予的权限在PL / SQL过程中不起作用 - 您必须直接向用户授予它们。
答案 2 :(得分:0)
请尝试以下操作...首先,您需要使用SYS将select选项授予rdsadmin和grant选项。
作为SYS 使用grant选项将DBA_objects上的select选择授予rdsadmin;
作为rdsadmin
将sys.dba_objects上的select赋予my_role;