ITPub博客

首页 > Linux操作系统 > Linux操作系统 > unlimited tablespace权限和quota 配额

unlimited tablespace权限和quota 配额

Linux操作系统 作者:swq618 时间:2016-06-14 11:39:06 0 删除 编辑

http://www.itpub.net/forum.php?mod=redirect&goto=findpost&ptid=1431917&pid=17741257有关于unlimited tablespace的一些解释

注意:授予resource角色的时候也会授予unlimited tablespace权限,但unlimited tablespace权限并不属于resource角色。

1、系统权限unlimited tablespace是隐含在dba和resource角色中的一个系统权限。当用户得到dba或resource的角色时, unlimited tablespace系统权限也隐式受权给用户。实验一下:

SQL> create user test01 identified by a

  2  default tablespace test01;

SQL> grant connect,resource to test01;

SQL> select * from dba_role_privs where grantee='TEST01';

GRANTEE                        GRANTED_ROLE                   ADM DEF

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

TEST01                         RESOURCE                       NO  YES

TEST01                         CONNECT                        NO  YES

 

SQL> select * from dba_sys_privs where grantee='TEST01';  //可以看到有UNLIMITED TABLESPACE权限

GRANTEE                        PRIVILEGE                                ADM

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

TEST01                         UNLIMITED TABLESPACE                     NO

SQL> conn test01/a

SQL> select * from session_privs;  //可以看到UNLIMITED TABLESPACE权限

PRIVILEGE

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

CREATE SESSION

CREATE TABLE

CREATE CLUSTER

CREATE SEQUENCE

CREATE PROCEDURE

CREATE TRIGGER

CREATE TYPE

CREATE OPERATOR

CREATE INDEXTYPE

 

已选择10行。

SQL> select * from role_sys_privs;  //可以看到unlimited tablespace并不属于resource

ROLE                           PRIVILEGE                                ADM

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

RESOURCE                       CREATE SEQUENCE                          NO

RESOURCE                       CREATE TRIGGER                           NO

RESOURCE                       CREATE CLUSTER                           NO

RESOURCE                       CREATE PROCEDURE                         NO

RESOURCE                       CREATE TYPE                              NO

CONNECT                        CREATE SESSION                           NO

RESOURCE                       CREATE OPERATOR                          NO

RESOURCE                       CREATE TABLE                             NO

RESOURCE                       CREATE INDEXTYPE                         NO

已选择9行。

 

2、系统权限unlimited tablespace不能被授予role(即使提示授权成功但实际上没有), 可以被授予用户。

系统权限unlimited tablespace不会随着resource, dba被授予role而授予给用户。

SQL> create user test02 identified by a

  2  default tablespace test01;

SQL> create role re_test;

SQL> grant resource to re_test;

SQL> grant connect,re_test to test02;

SQL> select * from dba_role_privs where grantee='TEST02';

GRANTEE                        GRANTED_ROLE                   ADM DEF

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

TEST02                         CONNECT                        NO  YES

TEST02                         RE_TEST                        NO  YES

 

SQL> select * from dba_sys_privs where grantee='TEST02';

未选定行

 

SQL> conn test02/a

SQL> select * from session_privs;

PRIVILEGE

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

CREATE SESSION

UNLIMITED TABLESPACE

CREATE TABLE

CREATE CLUSTER

CREATE SEQUENCE

CREATE PROCEDURE

CREATE TRIGGER

CREATE TYPE

CREATE OPERATOR

CREATE INDEXTYPE

已选择10行。

 

SQL> select * from role_sys_privs;

ROLE                           PRIVILEGE                                ADM

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

RE_TEST                        UNLIMITED TABLESPACE                     NO

RESOURCE                       CREATE SEQUENCE                          NO

RESOURCE                       CREATE TRIGGER                           NO

RESOURCE                       CREATE CLUSTER                           NO

RESOURCE                       CREATE PROCEDURE                         NO

RESOURCE                       CREATE TYPE                              NO

CONNECT                        CREATE SESSION                           NO

RESOURCE                       CREATE OPERATOR                          NO

RESOURCE                       CREATE TABLE                             NO

RESOURCE                       CREATE INDEXTYPE                         NO

已选择10行。

SQL> alter table test move tablespace test02;

alter table test move tablespace test02

            *

第 1 行出现错误:

ORA-01950: 对表空间 'TEST02' 无权限

上面即使有语句提示test02有unlimited tablespace权限但实际操作表空间却会报错:无权限

 

在这里我们需要关于一个比较重要的权限做一个说明,这个系统权限就是unlimited tablespace

unlimited tablespace的特点:

1、unlimited tablespace系统权限不能包含在一个角色role中

2、unlimited tablespace没有被包括在resource和dba角色中,但是如果将resource或dba角色授予了某个用户,那么这个用户将会拥有unlimited tablespace系统权限。但是如果resource角色授予了某个角色,再将这个角色授予某个用户,那么这个用户将不会拥有unlimited tablespace系统权限。

 

如果需要为一个用户指定一个限额,可以有两种方法:

1、在创建用户的时候指定限额:

create user test identified by a

default tablespace test

temporary tablespace temp

quota 3m on test;

2、在创建用户完成之后对用户限额进行指定:

create user test05 identified by a;

alter user test05 quota 3m on users;

3、更改用户的表空间限额:

全局:

grant unlimited tablespace to abc;

针对某个表空间:

alter user abc quota unlimited on test;

回收:

revoke unlimited tablespace from abc;

alter user abc quota 0 on test;

对于分配的临时表空间或临时还原表空间则不需要限额。

 

在此需要注意两个概念:表空间不足和用户配额不足

这两者不是一个概念。表空间的大小是指实际的用户表空间的大小;配额大小是用户指定使用表空间的大小。二者的解决方法也不相同。配额问题的解决:alter user abc auota 2g on tablespace_name;表空间不足的话就是扩展表空间或者增加数据文件了。

 

与表空间限额先关的数据字典视图:

dba_ts_quotas:描述所有用户表空间配额

user_ts_quotas:描述当前用户表空间配额,这个视图不会显示用户名列

在两个数据字典中,max_bytes字段就是表示表空间限额的值了,单位是B,其中-1代表没有限制

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

请登录后发表评论 登录
全部评论

注册时间:2014-05-24

  • 博文量
    108
  • 访问量
    289823