zoukankan      html  css  js  c++  java
  • Oracle查询用户权限角色(dba_sys_privs) (转)

    Oracle查询用户权限
    (转自:CSDN)

    数据字典

    1、动态数据字典是以v$xxx开始的数据字典,在数据库中约有150个左右,这些数据字典反映数据库动态运行状况,在不同时间查询会得到不同的结果。

    2、DBA数据字典是以DBA_xxx表示,该数据字典存储数据库结构,查询DBA数据字典可以反映数据库结构设置,管理磁盘空间和表空间、事务与回退段、用户与表空间等信息。

    3、用户数据字典是以USER_xxx表示,这些数据字典反应用户所创建的实体信息。如,USER_TABLES、USER_VIEWS,数据库管 理员具有操作全体用户所有实体的权限,可以查询这类数据字典,了解用户所创建实体状况,必要时可以将用户创建的不正确的实体删除。

    4、ALL_xxx类数据字典,表示用户所创建的实体及用户有权可以存取的实体。

    select privilege from dba_SYS_privs where grantee=‘USERNAME’

    Oracle查询用户权限

    -- 确定角色的权限
    select * from role_tab_privs ;              包含了授予角色的对象权限
    select * from role_role_privs ;             包含了授予另一角色的角色
    select * from role_sys_privs ;              包含了授予角色的系统权限

    -- 确定用户帐户所授予的权限
    select * from DBA_tab_privs ;   直接授予用户帐户的对象权限
    select * from DBA_role_privs ; 授予用户帐户的角色
    select * from DBA_sys_privs ;   授予用户帐户的系统权限


    查看当前用户权限:
    SQL> select * from session_privs;

    PRIVILEGE
    ----------------------------------------
    CREATE SESSION
    CREATE TABLE
    CREATE CLUSTER
    CREATE SYNONYM
    CREATE VIEW
    CREATE SEQUENCE
    CREATE PROCEDURE
    CREATE TRIGGER

    8 rows selected.

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

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    如何查看oracle用户权限?


     ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA。

      USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息

      ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上

    其他用户创建的对象但该用户有权访问的信息

      DBA_*:有关整个数据库中对象的信息

      (这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)

      1、查看所有用户

      select * from dba_user;

      select * from all_users;

      select * from user_users;

      2、查看用户系统权限

      select * from dba_sys_privs;

      select * from all_sys_privs;

      select * from user_sys_privs;

      3、查看用户对象权限

      select * from dba_tab_privs;

      select * from all_tab_privs;

      select * from user_tab_privs;

      4、查看所有角色

      select * from dba_roles;

      5、查看用户所拥有的角色

      select * from dba_role_privs;

      select * from user_role_privs;

      6、查看当前用户的缺省表空间

      select username,default_tablespace from user_users;

      7、查看某个角色的具体权限

      如grant connect,resource,create session,create view to TEST;

      8、查看RESOURCE具有那些权限

      用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';

  • 相关阅读:
    LeetCode 258 Add Digits
    LeetCode 231 Power of Two
    LeetCode 28 Implement strStr()
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 21 Merge Two Sorted Lists
    LeetCode 20 Valid Parentheses
    图形处理函数库 ImageTTFBBox
    php一些函数
    func_get_arg(),func_get_args()和func_num_args()的用法
    人生不是故事,人生是世故,摸爬滚打才不会辜负功名尘土
  • 原文地址:https://www.cnblogs.com/mohai/p/3071166.html
Copyright © 2011-2022 走看看