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


 一. 概述

    与权限,角色相关的视图大概有下面这些:

    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可以生成这个角色

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3