Chinaunix首页 | 论坛 | 博客
  • 博客访问: 572036
  • 博文数量: 107
  • 博客积分: 4406
  • 博客等级: 上校
  • 技术积分: 1279
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-07 16:20
文章分类

全部博文(107)

文章存档

2014年(4)

2012年(4)

2011年(16)

2010年(7)

2009年(7)

2008年(11)

2007年(49)

2006年(9)

分类: Oracle

2007-12-20 22:02:33

oracle与用户角色权限相关的视图
oracle与用户角色权限相关的视图
2007年07月16日 星期一 上午 10:43
一. 概述

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

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

阅读(1401) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~