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: 某个角色被赋予的相关表的权限

相关视图使用举例

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

原文地址:https://www.cnblogs.com/gaofei-1/p/7450156.html