最近在学习oracle 10g,对于role和system privilege的设置不太了解。
求高手对于比较常见的做下介绍
PS:我现在接触到的 role:connect,oem_monitor不了解, resource不了解,
system privilages: alter user, create user, create view, unlimited tablespace.
除此之外,还有什么呢?

解决方案 »

  1.   

    简单一些来说,oracle权限分为两种:对象权限,系统权限对象权限:就是你访问特定对象的权限,比如你有访问HR中dept表的权限,或者你具有更新该表的权限,或者你拥有读取系统视图v$session的权限。系统权限:就是对数据库系统进行维护的一些权限,是指对数据库系统及数据结构的操作权,例如创建/删除用户、表、同义词、索引等等。当然还有些超级权限,比如启停关闭数据库等。另外与权限有关的一个对象就是角色(role):说白了就是权限集的合体,角色是许多权限和角色的组合,它极大地方便了ORACLE的权限管理。
      

  2.   

    --1.查看所有用户:
      select * from dba_users;
      select * from all_users;
      select * from user_users;--2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
      select * from dba_sys_privs;
      select * from user_sys_privs;--3.查看角色(只能查看登陆用户拥有的角色)所包含的权限sql>select * from role_sys_privs;--4.查看用户对象权限:
      select * from dba_tab_privs;
      select * from all_tab_privs;
      select * from user_tab_privs;--5.查看所有角色:
      select * from dba_roles;--6.查看用户或角色所拥有的角色:
      select * from dba_role_privs;
      select * from user_role_privs;--7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)select * from V$PWFILE_USERS--注意:
    --1、以下语句可以查看Oracle提供的系统权限select name from sys.system_privilege_map--2、查看一个用户的所有系统权限(包含角色的系统权限)SELECT privilege
      FROM dba_sys_privs
     WHERE grantee = 'DATAUSER'
    UNION
    SELECT privilege
      FROM dba_sys_privs
     WHERE grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee = 'DATAUSER');
      

  3.   

    resource也是role,可以把role看作之user group,如果有一些user需要同样权限时,可以建一个role,然后给roel副权限,然后把role grant给这些用户。方便管理的目的。
      

  4.   

    参考:
    Oracle 用户及角色 介绍
    http://blog.csdn.net/tianlesoftware/archive/2009/11/09/4786956.aspx

    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    DBA1 群:62697716(满); DBA2 群:62697977(满)
    DBA3 群:62697850   DBA 超级群:63306533;     
    聊天 群:40132017
    --加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请
      

  5.   

    单个或若干 权限太琐碎,所以折腾出个role来打包管理,把若干 相关的权限放到一组,组成一个role,赋给用户,比你写长长的权限组给用户要有意义多了。
      

  6.   

    “西方经济学”的前辈,也就是说,object privilege是针对表的权限设置,system privilege是针对数据库或者说user的权限设置吗?
    role可以是OP也可以是SP,也可是他们两者都有。但是我不理解的是conect,oem_monitor,这些是什么作用。关于connect是说,如果赋予给某用户这个权限之后,就可以在oracle上log in了吗?还是在sql里?小弟很迷茫……
      

  7.   

    privilege是一种操作特权,而这种操作特权非常多,有上百种,如果每次建立一个用户,然后手动赋给他一些操作特权,岂不是很麻烦,所以把一部分privilege赋给了role,就像学生一样,只管学习,看书,oracle会建立很多具有不同特权的role,生活中举例来说,可能就是老师啦,班主任啦,校长啦,父母啦这样的角色,最后在建立用户的时候把role赋给这个用户,这个用户就拥有了这个角色所有的特权了
      

  8.   

    回复rein07, 您讲的真生动,我理解了~~多谢
      

  9.   


    connect、oem_monitor这些都是role,上面说了role是相关权限的集合,就是将常见的相关权限授予一个角色。下次给用户授权的时候只需要授予角色就可以,而不需要一个个授予相关权限,对于管理大量类型权限的用户来说,简便了系统权限管理工作。不知道明白了么?