标题: oracle与用户角色权限相关的视图
lonjew
元帅
Rank: 1



UID 73191
精华 1
积分 30615
帖子 14941
威望 3
金币 14931
热心 12
阅读权限 100
注册 2008-1-28
状态 离线
oracle与用户角色权限相关的视图

oracle与用户角色权限相关的视图

Oracle
本身的数据字典设计我个人觉得很合理, 因为DBA_xxx, ALL_xxx,USER_xxx  让人一看大概就知道这个视图是干什么用的. 本文简要总结了一下与权限,角色相关的视图.
  
一. 概述
  与权限,角色相关的视图大概有下面这些:  
      DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限  
      USER_SYS_PRIVS:  当前用户所拥有的系统权限  
      SESSION_PRIVS:    当前用户所拥有的全部权限  
      ROLE_SYS_PRIVS:    某个角色所拥有的系统权限  
      注意: 要以SYS用户登陆查询这个视图,否则返回空.  
      ROLE_ROLE_PRIVS:    当前角色被赋予的角色  
      SESSION_ROLES:      当前用户被激活的角色  
      USER_ROLE_PRIVS:  当前用户被授予的角色  
  
    另外还有针对表的访问权限的视图:  
      TABLE_PRIVILEGES  
      ALL_TAB_PRIVS      
      ROLE_TAB_PRIVS:    某个角色被赋予的相关表的权限  
      ...      
  
二.  Examples
  
  1.  查询当前用户所拥有的权限
              Select  *  from  session_privs;        
  2.  查询某个用户被赋予的系统权限.
            可以有多种方式  
                    Select  *  from  user_sys_privs;  
          或者:  select * from DBA_SYS_PRIVS where grantee='XXX'  
                (需要当前用户拥有DBA角色)  
  
  3.  查询当前用户被授予的角色:
          1.  Select  *  from SESSION_ROLES order by ROLE   
            说明: 这个查询会返回当前用户所被授予的全部角色, 其中包括  
            嵌套授权的角色. 例如将DBA角色授予了一个用户,DBA角色  
            已经被授予的角色(例如 exp_full_database 和 imp_full_database)  
            也会被查询出来               
            2.  Select * from USER_ROLE_PRIVS         
  
    4.  查询某一角色被赋予的系统权限
          Select Privilege from ROLE_SYS_PRIVS where ROLE=&Role  
        输入 role='CONNECT'  
        输出:
          PRIVILEGE
          --------------------
            ALTER SESSION
            CREATE CLUSTER
            CREATE DATABASE LINK
            CREATE SEQUENCE
            CREATE SESSION
            CREATE SYNONYM
            CREATE TABLE
            CREATE VIEW  
  
    5. 查询当前角色被授予的角色
        Select GRANTED_ROLE from ROLE_ROLE_PRIVS where ROLE=&ROLE  
        输入 role= 'DBA'  
        输出:  
          GRANTED_ROLE
          ----------------------
            DELETE_CATALOG_ROLE
            EXECUTE_CATALOG_ROLE
            EXP_FULL_DATABASE
            IMP_FULL_DATABASE
            PLUSTRACE
            SELECT_CATALOG_ROLE  
      说明: PLUSTRACE这个角色是用于执行SQL AUTO TRACE的, 通过执行   
              $ORACLE_HOME/sqlplus/admin/plustrce.sql可以生成这个角色.

网友 lonjew 签名 - 网友社区 ==
顶部
[广告] 免费域名(Free Subdomain) 免费空间(Free hosting) PR查询(Google Pagerank)



当前时区 GMT+8, 现在时间是 2008-10-8 02:43
信产部ICP备案:京ICP备05066424号 北京市公安局网监备案:1101050648号

Powered by Discuz! 5.5.0
清除 Cookies - 联系我们 - 网友俱乐部 - Archiver - WAP