系統許可權UNLIMITED TABLESPACE為什麼如此特殊?

warehouse發表於2008-06-27

1、系統許可權UNLIMITED TABLESPACE 不能被授予role,可以被授予使用者!

2、UNLIMITED TABLESPACE 沒有被包括在resource role中,但是UNLIMITED TABLESPACE 隨著resource的授出而被授予使用者的。

3、UNLIMITED TABLESPACE 不能伴隨著resource被授予role而授予使用者。

[@more@]

1、測試1

系統許可權UNLIMITED TABLESPACE 不能被授予role,可以被授予使用者!

SQL> create role rl1 ;

角色已建立。

SQL> create user test identified by test;

使用者已建立。

SQL> grant connect , create table , unlimited tablespace to rl1;
grant connect , create table , unlimited tablespace to rl1
*
第 1 行出現錯誤:
ORA-01931: 無法將 UNLIMITED TABLESPACE 授予角色

SQL> grant connect , create table to rl1;

授權成功。

SQL> grant rl1 , unlimited tablespace to test;

授權成功。

SQL>

2、測試2

系統許可權UNLIMITED TABLESPACE 沒有被包括在resource role中,但是UNLIMITED TABLESPACE 隨著resource的授出而被授予使用者。

SQL> revoke rl1 , unlimited tablespace from test;

撤銷成功。

SQL> grant connect , create table to test;

授權成功。

SQL> connect test/test
已連線。
SQL> create table t(id int);
create table t(id int)
*
第 1 行出現錯誤:
ORA-01950: 對錶空間 'USERS' 無許可權

SQL> connect xys/manager
已連線。
SQL> grant resource to test;

授權成功。

SQL> connect test/test
已連線。
SQL> create table t(id int);

表已建立。

SQL> CONNECT XYS/MANAGER
已連線。
SQL> select * from dba_sys_privs where grantee='TEST';

GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
TEST CREATE TABLE NO
TEST UNLIMITED TABLESPACE NO

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

GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TYPE NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE INDEXTYPE NO
RESOURCE CREATE TABLE NO

已選擇8行。

SQL>

3、測試3

UNLIMITED TABLESPACE 不能伴隨著resource被授予role而授予使用者,具體一點就是resource被授予了rl1 role,把rl1授予了test使用者,但是此時UNLIMITED TABLESPACE 沒有被授予test使用者!

SQL> create role rl1;

角色已建立。

SQL> create user test identified by test;

使用者已建立。

SQL> grant connect,resource to rl1;

授權成功。

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

GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
RL1 CONNECT NO YES
RL1 RESOURCE NO YES

SQL> grant rl1 to test;

授權成功。

SQL> connect test/test
已連線。
SQL> create table t(id int);
create table t(id int)
*
第 1 行出現錯誤:
ORA-01950: 對錶空間 'USERS' 無許可權

SQL> connect xys/manager
已連線。
SQL> grant unlimited tablespace to test;

授權成功。

SQL> connect test/test
已連線。
SQL> create table t(id int);

表已建立。

SQL>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-1006181/,如需轉載,請註明出處,否則將追究法律責任。

相關文章