Oracle数据库与用户角色权限相关的视图

  • 来源: 天新网 作者: 若水   2008-05-08/08:18
  •    一. 概述
    与权限,角色相关的视图大概有下面这些:
    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可以生成这个角色。

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多