在Oracle中有很多用于查权限的视图,但很多人在需要查权限时会很困惑,不知道该用哪个视图去查,这里我列出几个常见的用于查权限的视图及其用法:

1DBA_ROLE_PRIVS

该视图主要有以下2个作用:

1) 查某个user或role拥有哪些role:

select * from DBA_ROLE_PRIVS where GRANTEE='FIRGTRS';

GRANTEE                        GRANTED_ROLE                   ADM DEF

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

FIRGTRS                        GTRS_DMM_UPDATE_ROLE           NO  YES

2) 查看某个role赋给了哪些user或role:select * from DBA_ROLE_PRIVS where GRANTED_ROLE='GTRS_DMM_UPDATE_ROLE';

GRANTEE                        GRANTED_ROLE                   ADM DEF

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

GTRSOSA                        GTRS_DMM_UPDATE_ROLE           NO  YES

FIRGTRS                        GTRS_DMM_UPDATE_ROLE           NO  YES

GTRSSUP                        GTRS_DMM_UPDATE_ROLE           NO  YES

SYSTEM                         GTRS_DMM_UPDATE_ROLE           YES YES

2DBA_TAB_PRIVS

该视图的名字包含‘TAB’,且其中有一个column叫TABLE_NAME容易造成误解,其实该视图是用于查询在object上的权限,不仅仅table的权限。

select GRANTOR,GRANTEE,TABLE_NAME,PRIVILEGE from DBA_TAB_PRIVS where TABLE_NAME='PAYAGENT' order by GRANTEE;

GRANTOR         GRANTEE                                      TABLE_NAME                     PRIVILEGE

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

GTRS            DMM_ROLE                                        PAYAGENT                       INSERT

GTRS            DMM_ROLE                                        PAYAGENT                       UPDATE

GTRS            DMM_ROLE                                         PAYAGENT                       DELETE

GTRS            DMM_ROLE                                            PAYAGENT                       SELECT

GTRS            GTRS_DMM_READONLY_ROLE       PAYAGENT                       SELECT

GTRS            GTRS_DMM_UPDATE_ROLE           PAYAGENT                       INSERT

GTRS            GTRS_DMM_UPDATE_ROLE           PAYAGENT                       DELETE

GTRS            GTRS_DMM_UPDATE_ROLE           PAYAGENT                       UPDATE

GTRS            GTRS_DMM_UPDATE_ROLE           PAYAGENT                       SELECT

GTRS            GTRS_SUPPORT_READONLY_ROLE     PAYAGENT                       SELECT

GTRS            GTRS_SUPPORT_UPDATE_ROLE       PAYAGENT                       UPDATE

GTRS            GTRS_SUPPORT_UPDATE_ROLE       PAYAGENT                       INSERT

GTRS            GTRS_SUPPORT_UPDATE_ROLE       PAYAGENT                       DELETE

GTRS            GTRS_SUPPORT_UPDATE_ROLE       PAYAGENT                       SELECT

GTRS            SUPPORT_ROLE                                    PAYAGENT                       SELECT

3DBA_SYS_PRIVS

该视图用于查询某个user拥有哪些系统权限:

select * from DBA_SYS_PRIVS where GRANTEE='FIRGTRS';

GRANTEE                        PRIVILEGE       ADM

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

FIRGTRS                        CREATE SESSION  NO

4ROLE_SYS_PRIVS

该视图用于查询某个role拥有哪些系统权限:

select * from ROLE_SYS_PRIVS where ROLE='DBA_SUPPORT';

ROLE                           PRIVILEGE                      ADM

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

DBA_SUPPORT                    SELECT ANY SEQUENCE            NO

DBA_SUPPORT                    SELECT ANY DICTIONARY          NO

5SESSION_PRIVS

该视图用于查询当前user拥有哪些系统权限:

select * from SESSION_PRIVS;

PRIVILEGE

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

CREATE SESSION

SELECT ANY SEQUENCE

SELECT ANY DICTIONARY

6SESSION_ROLES

该视图用于查询当前user拥有哪些role:select * from SESSION_ROLES;

ROLE

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

DBA_SUPPORT

CONNECT

SELECT_CATALOG_ROLE

HS_ADMIN_ROLE

7附注: WITH ADMIN OPTIONWITH ADMIN OPTION 是针对系统权限的,它的作用可以用下面这句话说明:

Only users who have been granted a specific system privilege with the ADMIN OPTION or users with the system privileges GRANT ANY PRIVILEGE or GRANT ANY OBJECT PRIVILEGE can grant or revoke system privileges to other users.

也就是说,对于某些权限大的user来说(比如DBA,一般拥有GRANT ANY PRIVILEGE和GRANT ANY OBJECT PRIVILEGE),WITH ADMIN OPTION对它们没有影响,因为它们本身就具有给其它user或role赋系统权限的权力;而对于一般的user来说,它们的权限都是DBA赋给它们的,如果在DBA赋给它们权限时加了WITH ADMIN OPTION, 则它们还可以把这些权限再赋给其它的user,否则不能,请看以下实验:

1) 首先用DBA账号(a105024)登陆数据库,并创建两个测试账号(testuser1, testuser2):A105024@O02DMS1>create user testuser1 identified by test1;

User created.

A105024@O02DMS1>create user testuser2 identified by test2;

User created.

2) 用DBA账号把 create session权限赋给测试账号1:A105024@O02DMS1>grant CREATE SESSION to testuser1;

Grant succeeded.

3) 用测试账号1登陆数据库,并查看测试账号1的系统权限:TESTUSER1@O02DMS1>select * from user_sys_privs;

USERNAME                       PRIVILEGE                                ADM

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

TESTUSER1                       CREATE SESSION                           NO

4) 用测试账号1尝试把create session赋给其它user:TESTUSER@O02DMS1>grant CREATE SESSION to testuser2;

grant CREATE SESSION to testuser2

*

ERROR at line 1:

ORA-01031: insufficient privileges出现权限不足的错误,是因为ADM那列的值为NO.

5) 用DBA账号把create session权限赋给测试账号1,并加上with admin option:A105024@O02DMS1>grant CREATE SESSION to testuser1 with admin option;

Grant succeeded.

6) 查看测试账号1的系统权限:

TESTUSER1@O02DMS1>select * from user_sys_privs;

USERNAME                       PRIVILEGE                                ADM

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

TESTUSER1                       CREATE SESSION                           YES

7) 用测试账号1把create session赋给其它user:TESTUSER@O02DMS1>grant CREATE SESSION to testuser2;

Grant succeeded.

WITH GRANT OPTION类似,只是它是针对对象权限的。

Oracle 查询权限视图的更多相关文章

  1. Oracle查询dba_extents视图很慢

    Oracle查询dba_extents视图很慢 问题描述 下边这条SQL查询每次大概要花1分钟左右,实在是比较异常. select owner,tablespace_name from dba_ext ...

  2. oracle 建立视图,创建用户并授予查询权限

    一.需求 数据库有个表car,需要为这个表建立一个视图view_car,并新建一个用户user01,赋予查询这个视图的权限 二.实施步骤 1.以管理员clgl登陆数据库,新建视图view_car: c ...

  3. Oracle总结【视图、索引、事务、用户权限、批量操作】

    前言 在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了...那么本篇主要总结关于Oralce视图.序列.事务的一些内容... 在数据库中,我们可以把各种的SQL语句分为四大类 ...

  4. Oracle查询用户权限

    Oracle查询用户权限 -- 确定角色的权限select * from role_tab_privs ;              包含了授予角色的对象权限select * from role_ro ...

  5. Oracle创建设置查询权限用户

    用户创建的可以参考博客: https://blog.csdn.net/u014427391/article/details/84889023 Oracle授权表权限给用户: 语法:grant [权限名 ...

  6. Oracle高危安全漏洞:具有查询权限用户可绕开安全限制进行数据修改

    数据库版本 11.2.0.* 检查数据库是否存在此bug的脚本: Oracle用户执行此脚本 #!/bin/bash # Usage: 检查ORACLE数据库是否存在高危安全漏洞(具有查询权限用户可绕 ...

  7. Oracle中创建视图

    Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表. 视图是存储在数 ...

  8. Oracle数据库学习 视图、序列及存储过程

    视图(View) 视图也被称作虚表,也就是虚拟的表,是一组数据的逻辑表示. 视图对应一个select语句,结果集被赋予一个名字,也就是视图的名字. 视图本身不包含任何数据,它只是包含映射到基表的一个查 ...

  9. Oracle数据库之视图与索引

    Oracle数据库之视图与索引 1. 视图简介 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改. 视图基于的表称为基表,视图是存储在数据字典里的一条SE ...

随机推荐

  1. [Swift]LeetCode962. 最大宽度坡 | Maximum Width Ramp

    Given an array A of integers, a ramp is a tuple (i, j) for which i < j and A[i] <= A[j].  The ...

  2. server.properties 文件详解

    [转载]:server.properties 文件详解 # 每一个Broker在集群中的唯标识.即使Broker的IP地址发生了变化,broker.id只要没变,则不会影响consumers的消息情况 ...

  3. .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用

    写在前面 上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现.但 ...

  4. 《HelloGitHub月刊》第 05 期

    <HelloGitHub>第 05 期 兴趣是最好的老师,<HelloGitHub>就是帮你找到兴趣! 欢迎各路人士加入本项目,丰富月刊的内容,也可以直接在Issue(需要登录 ...

  5. RabbitMQ消息队列(十二)-性能测试

    硬件配置 宿主机用的联想3850X6的服务器四颗E7-4850v3的处理器,DDR4内存,两块1.25TB的pcie固态.在宿主机上使用的事esxi5.5的虚拟化平台,在子系统中安装RabbitMQ和 ...

  6. Hbase王国游记之:Hbase客户端API初体验

    §历史回顾 2018年岁末,李大胖朦胧中上了开往Hbase王国的车,伴着一声长鸣,列出缓缓驶出站台,奔向无垠的广袤. (图片来自于网络) 如不熟悉剧情的,可观看文章: 五分钟轻松了解Hbase列式存储 ...

  7. C# 获取电脑的网络连接状态

    判断连网的方法介绍 1. InternetGetConnectedState 此函数获取网络状态有延时,且对网卡伤害较大 MSDN官方自己推荐不建议使用,不管是连网状态下还是断网情况下,获取的网络状态 ...

  8. [MySQL] mysql 的读写锁与并发控制

    1.无论何时只要有多个查询在同一时刻修改数据,都会产生并发控制的问题 2.讨论mysql在两个层面,服务器层和存储引擎层,如何并发控制读写 3.举了个mbox邮箱文件的例子,说如果有多个进程同时对mb ...

  9. Java 由浅入深GUI编程实战练习(二)

    一,项目简介 1.利用Java GUI 绘制图像界面,设置整体布局 2.编写一个随机数生成1~100的随机数 3.编写一个验证类,用于验证用户输入值与生成随机数是否相等并记录用户猜测次数,当用户猜测成 ...

  10. 【CentOS7】服务环境搭建

    用了两天时间,完成了服务环境的搭建.记录下了搭建的过程,搭建细节并没有记录. 1.OpenSSH. (1)yum search ssh (2)yum install openssh-server (3 ...