oracle权限问题概括:

如果想详细的查看相关的系统权限可以运行下面的查询,从而筛选你要的视图:
  sys@ORCL>select distinct table_name from dict where table_name like '%PRIVS%';
 
我主要概括的是session级别的权限问题:
 
 
  sys@ORCL>create user zhangyu account unlock identified by tiger;
 
sys@ORCL>select privilege,grantee from dba_sys_privs where grantee in ('CONNECT','RESOURCE');
PRIVILEGE                                GRANTEE
---------------------------------------- ------------------------------
CREATE TRIGGER                           RESOURCE
CREATE SEQUENCE                          RESOURCE
CREATE TYPE                              RESOURCE
CREATE PROCEDURE                         RESOURCE
CREATE CLUSTER                           RESOURCE
CREATE SESSION                           CONNECT
CREATE OPERATOR                          RESOURCE
CREATE INDEXTYPE                         RESOURCE
CREATE TABLE                             RESOURCE
已选择9行。

上面的查询能够让我们了解我们授于的角色中都有哪些系统权限:
 
 grant connect,resource to zhangyu;
 
conn zhangyu/tiger;
 
zhangyu@ORCL>select * from session_roles;
ROLE
------------------------------
PLUSTRACE
CONNECT
RESOURCE
 
   上面的plustrace角色,我们知道是用来进行autotrace的角色,这个角色被授给了public了,所以每建
一个用户oracle都会自动将plustrace角色授于用户。
 
zhangyu@ORCL>set role connect;
角色集

查看当前会话权限:
zhangyu@ORCL>select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE

zhangyu@ORCL>create table test(x int);
create table test(x int)
*
第 1 行出现错误:
ORA-01031: 权限不足

zhangyu@ORCL>set role resource;
角色集
zhangyu@ORCL>create table test(x int);
表已创建。

zhangyu@ORCL>select * from session_privs;
PRIVILEGE
----------------------------------------
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
 
 
  另外如果我们set role后,而sys又revoke了相应角色中包含的权限会怎样呢:
 
zhangyu@ORCL>set role resource;
角色集
zhangyu@ORCL>select * from session_privs;
PRIVILEGE
----------------------------------------
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
已选择9行。

sys@ORCL>revoke create table from zhangyu;
revoke create table from zhangyu
*
第 1 行出现错误:
ORA-01952: 系统权限未授予 'ZHANGYU'

  从上面我们可以看到,zhangyu这个用户虽然有create table权限,但是这个权限是包含在resource角中
的,所以oracle认为zhangyu没有create table权限。
  除非我们显式的授于zhangyu这个权限,然后才能回收:
 
  sys@ORCL>grant create table to zhangyu;
授权成功。
zhangyu@ORCL>set role connect;
角色集
zhangyu@ORCL>select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE         
zhangyu@ORCL>create table test(x int);
表已创建。

  以上我们总结出,如果角色中有了该权限,而sys又显式的授于了此权限,则我们在set role时将取交集
,而如果set role时没有包含这个单独授于的权限,则权限取并集。
 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23102627/viewspace-659454/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23102627/viewspace-659454/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值