ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle权限问题概括:

oracle权限问题概括:

原创 Linux操作系统 作者:ocpdba591 时间:2010-04-12 14:48:53 0 删除 编辑
如果想详细的查看相关的系统权限可以运行下面的查询,从而筛选你要的视图:
  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博客 ” ,链接:https://blog.itpub.net/23102627/viewspace-659454/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 好电影 啊
下一篇: 锁定的一些
请登录后发表评论 登录
全部评论

注册时间:2009-12-30

  • 博文量
    9
  • 访问量
    24186