Oracle查询用户权限

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

数据字典

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';

 

 

原文作者:jason

原文地址:http://hi.baidu.com/jason_xux/blog/item/62e881ef34054cf2b2fb9596.html

oracle12c 安装和使用-plsql变量 环境 win10 64位 Oracle Database 12c Release 2 (12.2.0.1.0) 1.下载 数据库(包括客户端) Oracle Database 12c Release 2 (12.2.0.1.0) for Microsoft Windows (x64) 客户端 Oracle Database 12c Release 2 Client (12.2.0.1.0) for... 阅读详情

相关推荐

oracle 中user_tables表各字段意思

table_name : 表名 tablespace_name : 表空间名 cluster_name : 群集名称 iot_name : IOT(Index Organized Table)索引组织表的名称 status : 状态 pct_free : 为一个块保留的空间百分比 pct_used : 一个块的使用水位的百分比 ini_trans : 初始交易的数量 m...

wj的博客 9694

ORACLE查询用户权限

查看当前用户所有权限,查看所用用户对表的权限

weixin_72431427的博客 7673

oracle 创建只有查询权限用户

方法1: 创建只读用户 select * from user_tablespaces 第一步、创建用户。使用有管理员权限用户创建一个新的用户: create user 用户名 identified by 密码 default tablespace 表空间; 第二步、赋连接权限: grant connect to 用户名; 第三步、赋表权限 owner 主用户 grant select on owner.表名 to 用户名; 如果有多表,可以用selece转换批量执行语句: sel...

Finder_Way 3867

Oracle 查看用户及各种权限

1.查看所有用户:select*fromdba_users;select*fromall_users;select*fromuser_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):select*fromdba_sys_privs;select*fromuser_sys_privs;3.查看角色(...

weixin_34123613的博客 3050

oracle查询用户权限

请确保以具有适当权限用户身份执行这些查询语句,例如具有 DBA 或类似权限用户。将 “用户名” 替换为要查询的具体用户名,该语句将返回该用户对存储过程或函数的权限列表。将 “用户名” 替换为要查询的具体用户名,该语句将返回该用户被授予的系统级权限列表。将 “用户名” 替换为要查询的具体用户名,该语句将返回该用户被授予的角色列表。将 “用户名” 替换为要查询的具体用户名,该语句将返回该用户对视图的权限列表。将 “用户名” 替换为要查询的具体用户名,该语句将返回该用户对表的权限列表。

weixin_51458326的博客 7083

oracle查询用户自己权限,oracle查询用户权限及角色(摘)

1.查看所有用户:select * from dba_users;select * from all_users;select * from user_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):select * from dba_sys_privs;select * from user_sys_privs;3.查看角色(只能查看登陆用户拥有的角色)所包含的权限sql...

weixin_29737443的博客 2178

oracle 账户查询权限,如何查询Oracle用户的角色/权限

在开发环境迁移测试环境时,分配的oracle用户SMARTYD经常会报用户权限异常/服务端连接异常等错误信息;初步排除代码异常问题后,开始排查是否新分配的oracle用户问题;学习整理如下:1、查询oracle的连接数select count(*) from v$session;查询oracle的连接数v$session:这个视图主要提供的是一个数据库connect的信息,主要是client端的信...

weixin_34638409的博客 965

关于oracle用户权限查询

数据字典 1、动态数据字典是以v$xxx开始的数据字典,在数据库中约有150个左右,这些数据字典反映数据库动态运行状况,在不同时间查询会得到不同的结果。 2、DBA数据字典是以DBA_xxx表示,该数据字典存储数据库结构,查询DBA数据字典可以反映数据库结构设置,管理磁盘空间和表空间、事务与回退段、用户与表空间等信息。 3、用户数据字典是以USER_xxx表示,这些数据字典反应用户所创建的实

直帅的博客 809

oracle查询用户自己权限,oracle中怎样查询用户权限

数据字典视图的种类分别为:USER,ALL和DBA.USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息DBA_*:有关整个数据库中对象的信息(这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)1、查看所有用户select*fromdba_...

weixin_29067143的博客 721

oracle用户权限的基本查询

oracle查询用户权限         DBA_* 描述的是数据库中的所有对象     ALL_* 描述的是当前用户有访问权限的所有对象     USER_* 描述的是当前用户所拥有的所有对象     查看所有用户:     select * from dba_users; --->显示所有用户的详细信息     select * from all_users; --->显示用户用户id和创建用户时间三个字段     select * from us...

Reyn_观极 740

oracle——将指定用户下所有表的查询权限赋权给查询用户

oracle的开发和管理往往都是分开的,当然不否认这种"集万千宠爱于一身"的人才也大有人在,但是在公司,往往开发人员兼顾程序和数据库的设计与开发,而oracle dba则是负责oracle的安全与维护。那么这就出现了一个问题,权限问题,不是所有人都可以有dba权限的,这样很容易造成不安全的隐患。所以要合理的分配用户权限。以下举例说明: 一、创建了一个查询用户r...

weixin_34097242的博客 4005

ORACLE11g如何查询用户权限

Oracle数据库中,您可以通过多种方式查询用户权限

qq_27361945的博客 874

oracle用户授权所有权限,查询oracle用户所有的权限,并获取授权限的DDL

1. 查看指定用户拥有的所有权限(系统权限、对象权限、角色),分别是通过dba_sys_privs,dba_tab_privs,dba_role_privs三个视图来查看。脚本: query_user_privs.sql2. 获得指定用户所赋权限的DDL语句,有两种方式:1).利用1中query_user_privs.sql脚本,在select 后加入grant to等关键字,使得查询...

weixin_39643336的博客 2481

oracle查询用户角色及权限,oracle用户具有的权限和角色

如何查看一个oracle用户具有的权限和角色1.查看所有用户:select * from dba_users;select * from all_users;select * from user_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):select * from dba_sys_privs;select * from user_sys_privs;3.查看角色(只...

weixin_39690401的博客 285

oracle给角色附sysdba权限,oracle查询有sysDBA权限用户

查看具有sysdba权限用户以sys用户登陆Oracle,执行select * from V_$PWFILE_USERS;可查询到如下结果:SQL> select * from V_$PWFILE_USERS;USERNAME SYSDBA SYSOPER------------------------------ ------ -------SYS TRUE TRUE(何为sysoper...

weixin_39560604的博客 2021

oracle查询用户权限

DBA_* 描述的是数据库中的所有对象 ALL_* 描述的是当前用户有访问权限的所有对象 USER_* 描述的是当前用户所拥有的所有对象 查看所有用户: select * from dba_users; —>显示所有用户的详细信息 select * from all_users; —>显示用户用户id和创建用户时间三个字段 select * from user_users; —>显示当前用户的详细信息。 查看当前用户: select * from v$session;

weixin_43135696的博客 489

oracle 查询权限目录,oracle用户权限查询

oracle用户权限查询oracle中查看用户权限1.查看所有用户:select * from dba_users;select * from all_users;select * from user_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):select * from dba_sys_privs;select * from user_sys_privs;3.查看...

weixin_34666364的博客 1800

oracle开放查询权限_Oracle查询指定用户权限的所有表

Oracle使用过程中经常会用到查看当前或者指定用户对哪些表拥有权限,一下几种方法可以实现查看当前或者指定用户对哪些表拥有权限。方法1:根据指定用户名获得对应用户所拥有权限的表SQL> SELECT table_name, owner FROM all_tables WHERE owner = 'SCOTT';TABLE_NAME OWNER-----------------...

weixin_28728425的博客 4112
上一篇: 安装SQL Server 2008后,再安装Visual Studio 2008无法选择安装路径的解决方法
下一篇: VC中Error spawning cl.exe错误的解决方法
Wentasy
博客等级 码龄15年 2390粉丝 673原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值