Unlimited Tablespace 权限 及 “延迟段”特性


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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30776559/viewspace-2121398/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值