创建一个角色并授予该角色特权

时间:2019-01-23 19:49:48

标签: sql oracle oracle11g

主要目的是创建单独的角色,例如开发人员,测试人员和其他人员,以分别登录oracle数据库。当前,没有监视并且使用与应用程序用来查询的凭据相同的凭据,这使得监视要进行哪些更改以及由谁进行更改变得非常困难。

  1. 创建角色开发者
  2. 向开发人员(角色)授予插入,删除,更新,选择...等特权
  3. 创建用户
  4. 授予用户角色
  5. 分配表空间以分别访问具有这些特权的用户。

我尝试将所有表分配给角色,但是它不起作用。

begin
    for x in (select object_name from all_objects where owner='app_owner' and object_type in ('TABLE','VIEW')) loop
        execute immediate 'GRANT select on app_owner.' || x.object_name || ' to developers';
    end loop;
end;
/

SQL上没有授予角色(开发人员)特权。但是,如果我单独进行拨款,那很好。

grant use of tablespace <tablespacename> to role;

上面尝试仍然没有用。 关于如何满足上述要求有什么想法?

2 个答案:

答案 0 :(得分:0)

您不能将表空间的使用授予ROLE。用户需要在表空间上有配额才能在表空间中创建对象。您可以在CREATE USER或ALTER USER命令上授予配额。我没有在发布的PL / SQL中看到该错误来颁发授权,但是没有时间编辑和测试代码。如果查询dba_tab_privs以获取该角色,是否看到对其的授权?您还记得将角色授予目标用户吗? HTH-马克·D·鲍威尔-

答案 1 :(得分:0)

您编写的代码是 close ,但 close不够-字母大小写很重要。

                                                        THIS!
                                                        vvvvv
SQL> select object_name from all_objects where owner = 'scott' and object_type in ('TABLE', 'VIEW');

no rows selected

SQL> select object_name from all_objects where owner = 'SCOTT' and object_type in ('TABLE', 'VIEW');

OBJECT_NAME
------------------------------
V_SALGRADE
V_DEPT
V_BONUS
DEPT
EMP_VIEW_UPDT
EMP