unlimited tablespace許可權和quota 配額

swq618發表於2016-06-14

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是隱含在dbaresource角色中的一個系統許可權。當使用者得到dbaresource的角色時, unlimited tablespace系統許可權也隱式受權給使用者。實驗一下:

SQL> create user test01 identified by a

  2  default tablespace test01;

SQL> grant connect,resource to test01;

SQL>

GRANTEE                        GRANTED_ROLE                   ADM DEF

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

TEST01                         RESOURCE                       NO  YES

TEST01                         CONNECT                        NO  YES

 

SQL>   //可以看到有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>

未選定行

 

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' 無許可權

上面即使有語句提示test02unlimited tablespace許可權但實際操作表空間卻會報錯:無許可權

 

在這裡我們需要關於一個比較重要的許可權做一個說明,這個系統許可權就是unlimited tablespace

unlimited tablespace的特點:

1unlimited tablespace系統許可權不能包含在一個角色role

2unlimited tablespace沒有被包括在resourcedba角色中,但是如果將resourcedba角色授予了某個使用者,那麼這個使用者將會擁有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部落格 ” ,連結:http://blog.itpub.net/29674916/viewspace-2119959/,如需轉載,請註明出處,否則將追究法律責任。

相關文章