Oracle查询用户权限角色(dba_sys_privs) (转)

摘要:
Oracle查询用户权限数据字典1。动态数据字典是一个以v$xxx开头的数据字典。数据库中有大约150个数据字典。这些数据字典反映了数据库的动态操作,在不同的时间会得到不同的结果。ORACLE数据字典视图的类型有:USER、ALL和DBA。
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';

免责声明:文章转载自《Oracle查询用户权限角色(dba_sys_privs) (转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.mtl文件格式解析枚举类的作用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ORACLE 锁机制

Refer to:http://blog.csdn.net/tianlesoftware/article/details/4696896 万能解决之道,就是从系统级kill掉lock的process  在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事...

oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统、oracle11g数据库 问题描述:在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错。错误提示内容如下。...

Oracle 异常处理

1、什么是异常 在PL/SQL中的一个警告或错误的情形都可被称为异常。包括编译时错误(PLS)和运行时错误(ORA)。一个异常通常包含一个错误代码和错误文本,分别指示异常的编号和具体错误信息。 异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于PL/SQL程序块一旦产生异常而没有指出如何处...

thinkphp 对数据库的操作

   框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下。 数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是对数据的增删改的操作,一步步的讲述一下框架对数据库的操作 想要操作数据库,第一步必然是要:链接数据库 一、链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编...

mongodb与mysql命令详细对比

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。 MySQL MongoDB 说明...

Mysql日期转换函数、时间转换函数

Mysql日期转换函数、时间转换函数 一、MySQL 获得当前日期时间 函数 1,获得当前日期+时间(date + time)函数:now(): select now(); 结果:2008-08-08 22:20:46 2,获得当前日期+时间(date + time)函数:sysdate()sysdate() 日期时间函数跟 now() 类似,不同...