Unlimited Tablespace 許可權 及 “延遲段”特性

TaihangMeng發表於2016-07-03

1、UNLIMITED TABLESPACE 的含義

一個使用者如果被賦予這個許可權,那就獲得了在所有資料表空間上不限制空間使用的許可權。這個許可權包含在RESOURCE這個ROLE中。

2、實驗

(1)建立測試tablespace

  1. SQL> show user
  2. USER is "SYS"

  3. SQL> create tablespace tbs1
  4.   2 datafile '/oradat/TRANS/tbs1_01.dbf' size 100M
  5.   3 logging
  6.   4 extent management local
  7.   5 segment space management auto;

  8. Tablespace created.

  9. SQL> create tablespace tbs2
  10.   2 datafile '/oradat/TRANS/tbs2_01.dbf' size 100M
  11.   3 logging
  12.   4 extent management local
  13.   5 segment space management auto;

  14. Tablespace created.
(2)建立測試使用者,授予基本角色

  1. SQL> create user mth identified by mth default tablespace tbs1 temporary tablespace TEMP;

  2. User created.
  3. SQL> grant connect,resource to mth;

    Grant succeeded.

  1. SQL> conn mth/mth
  2. Connected.
  3. SQL> select * from user_role_privs;

  4. USERNAME GRANTED_ROLE ADM DEF OS_
  5. --------------- ------------ --- --- ---
  6. MTH CONNECT NO YES NO
  7. MTH RESOURCE NO YES NO
  8. SQL> select privilege from user_sys_privs;

  9. PRIVILEGE
  10. ----------------------------------------
  11. UNLIMITED TABLESPACE

  12. SQL> conn / as sysdba
  13. Connected.
  14. SQL> revoke resource from mth;

  15. Revoke succeeded.

  16. SQL> conn mth/mth
  17. Connected.
  18. SQL> select * from user_role_privs;

  19. USERNAME GRANTED_ROLE ADM DEF OS_
  20. --------- ------------ --- --- ---

  21. MTH CONNECT NO YES NO

  22. SQL> select privilege from user_sys_privs;

  23. no rows selected

可以看到,UNLIMITED TABLESPACE是包含在在resource中的。


  1. SQL> conn / as sysdba
  2. Connected.
  3. SQL> grant resource to mth;

  4. Grant succeeded.

(3)建立測試表,插入測試資料

  1. SQL> conn mth/mth
  2. Connected.
  3. SQL> create table t1(id number);

  4. Table created.

  5. SQL> insert into t1 values(1);

  6. row created.

  7. SQL> commit;

  8. Commit complete.

  9. SQL> create table t2(id number) tablespace tbs2;

  10. Table created.

  11. SQL> insert into t2 values(2);

  12. row created.

  13. SQL> commit;

  14. Commit complete.
可以看到,在tbs1以及tbs2上該使用者都有建立表和插入資料的許可權。這就是UNLIMITED TABLESPACE的作用。

(4)收回UNLIMITED TABLESPACE許可權,再做測試。

  1. SQL> conn / as sysdba
  2. Connected.
  3. SQL> revoke unlimited tablespace from mth;

  4. Revoke succeeded.

  5. SQL> conn mth/mth;
  6. Connected.
  7. SQL> create table t3(id number);

  8. Table created.

  9. SQL> insert into t3 values(3);
  10. insert into t3 values(3)
  11.             *
  12. ERROR at line 1:
  13. ORA-01950: no privileges on tablespace 'TBS1'

  14. SQL> create table t4(id number) tablespace tbs2;

  15. Table created.

  16. SQL> insert into t4 values(4);
  17. insert into t4 values(4)
  18.             *
  19. ERROR at line 1:
  20. ORA-01950: no privileges on tablespace 'TBS2'
可以看到,收回UNLIMITED TABLESPACE後,不論是使用者預設的tablespace還是其他tablespace,該使用者都可以建立表,但是不能插入資料。這跟11gR2的新特性“延遲段”有關。下面介紹“延遲段”特性。

延遲段:預設將表、索引、LOB的物理空間分配推遲到第一條記錄插入表中時。即有實際的資料插入表中時,再為每個物件按照定義的空間大小,為其分配空間 。此時,才能在相關檢視中看見該表的相關儲存資訊。

  1. SQL> select * from v$version where rownum<2;

  2. BANNER
  3. --------------------------------------------------------------------------------

  4. Oracle Database 11g Enterprise Edition Release 11.2.0.4.- 64bit Production
Oracle控制此特性的引數為:DEFERRED_SEGMENT_CREATION
當DEFERRED_SEGMENT_CREATION=TRUE時,啟用延遲段特性;反之,不啟用。預設的,資料庫啟用該引數。

  1. SQL> show parameter defer

  2. NAME                         TYPE        VALUE
  3. ---------------------------- ----------- ----------------

  4. deferred_segment_creation    boolean     TRUE
(1)全域性禁用


    1. SQL> alter system set deferred_segment_creation=false;

    2. System altered.

    3. SQL> show parameter defer

    4. NAME                        TYPE        VALUE
    5. --------------------------- ----------- ----------------

    6. deferred_segment_creation   boolean     FALSE

這樣,資料庫中任何一個使用者建立表時,延遲段特性都將被關閉。

如果只想限制某個使用者使用該特性,就需要在會話層進行禁用。

(2)會話層禁用

  1. SQL> alter session set deferred_segment_creation=false;

  2. System altered.

  3. SQL> show parameter defer

  4. NAME                        TYPE        VALUE
  5. --------------------------- ----------- ----------------

  6. deferred_segment_creation   boolean     FALSE



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

相關文章