Sql 如何向oracle中的角色授予所有对象(表、视图、过程、函数等)的所有权限

Sql 如何向oracle中的角色授予所有对象(表、视图、过程、函数等)的所有权限,sql,oracle,plsql,Sql,Oracle,Plsql,创建的角色: create role rl_new 希望将所有对象(如表、视图、过程、函数等)的所有特权授予该角色 grant all on all_objects to rl_new 将所有对象的所有特权赋予角色的正确方式是什么?所有对象都只是一个视图,所以,不,这不是您想要的。您需要分别授予对每个对象的访问权限。您可以使用动态SQL来简化这一过程。比如说 begin for t in (select * from user_tables) loop execute imm

创建的角色:

create role rl_new
希望将所有对象(如表、视图、过程、函数等)的所有特权授予该角色

grant all on all_objects to rl_new

将所有对象的所有特权赋予角色的正确方式是什么?

所有对象都只是一个视图,所以,不,这不是您想要的。您需要分别授予对每个对象的访问权限。您可以使用动态SQL来简化这一过程。比如说

begin
  for t in (select * from user_tables)
  loop
    execute immediate 'grant all on ' || t.table_name || ' to rl_new';
  end loop
end;
当然,您需要对不同类型的对象执行类似的操作


接下来,您还需要在创建新对象所部署的脚本中包含授权。

使用“所有对象”视图而不是“用户”表如何?@AnkitBajpai-
所有对象
显示您可以访问的所有内容。一般来说,您无法授予对这些对象的访问权限。您还必须过滤掉无法授予访问权限的内容(即私有同义词)。另外,您需要为不同的对象类型生成不同的授权。考虑到这一点,我宁愿使用单独的部分来查询
user\u表
user\u视图
,等等。或者在光标中使用
user\u objects
,并在
object\u type
列上应用case语句,为每种类型的对象生成特定的sql语句。是否要为特定架构或整个数据库授予所有特权?如果您想授予对数据库上所有内容的访问权,那么您可能需要查看系统权限,比如
授予选择任何表以rl_new