我有一个AWS RDS Oracle数据库。我想通过授予选项授予对某些sys对象的访问权限。
我运行:
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
但我得到错误:
ORA-06550: line 1, column 164:
PLS-00306: wrong number or types of arguments in call to 'GRANT_SYS_OBJECT'
我不喜欢最后一个参数'true'。根据这里的文档,这个参数是授予选项。
如果我不带grant选项运行命令:
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT');
它可以工作,但是它授予特权而不带grant选项。
有谁知道如何在AWS Oracle RDS中使用授予选项授予权限吗?
谢谢。
问题可能来自旧版本,或者因为您没有告知哪些参数与此顺序对应。
我建议按照文档运行它。为什么?因为当你不告知参数时,Oracle将按照创建包/过程/函数时定义的顺序依次运行它。
我无法访问这个RDS管理包的引用,但很可能是它导致了错误。
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_OBJECTS',
p_grantee => 'MASTER_USER',
p_privilege => 'SELECT',
p_grant_option => true);
end;
/
然而,由于您正在光栅with admin option
,那么您必须考虑
要能够在对象上授予权限,您的帐户必须具有通过grant选项直接授予它的那些特权,或者通过使用admin选项授予的角色。在最常见的情况下,您可能想要在一个DBA视图上授予SELECT,该视图已被授予SELECT_CATALOG_ROLE角色。如果这个角色不是已经直接授予如果您的用户使用admin选项,那么您将无法传输特权。如果您拥有DBA特权,那么您可以授予该角色直接发给另一个用户
还要考虑Oracle版本中Amazon RDS中不推荐的版本
Amazon RDS Oracle