我有一个 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”。根据文档,此参数用于授予选项。
如果我在没有授予选项的情况下运行命令:
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT');
它可以工作,但它授予权限而没有授予选项。
如何在 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
那么你必须考虑这一点
为了能够授予对象权限,您的帐户必须具有 直接使用授予选项授予它的权限,或通过 使用管理选项授予的角色。 在最常见的情况下,您 可能想要在已被授予的 DBA 视图上授予 SELECT SELECT_CATALOG_ROLE 角色。如果该角色尚未直接授予 使用管理员选项给您的用户,那么您将无法转移 权限。 如果您有DBA权限,那么您可以授予该角色 直接发送给另一个用户
另请考虑 Amazon RDS for Oracle 版本中已弃用的版本