[转自OCM 白大师]表的storage (MINEXTENTS)属性对truncate后表大小的影响

本文是转帖,原文网址:http://blog.csdn.net/haibusuanyun/article/details/50724747

TRUNCATE表后对表大小进行查询,表的空间没有释放完毕?
对此进行实验测试,结果如下:(测试环境LINUX+ORACLE11.2.0.3)
创建表时语句指定了storage (MINEXTENTS 5);时,TRUNCATE后还有5个EXTENT;
创建表时语句不指定storage (MINEXTENTS参数,即使用默认值时;TRUNCATE后只有1个EXTENT;
------------实验1:指定了storage (MINEXTENTS 5)


SQL> create tablespace test2 datafile '/u01/oracle/base/oracle/oradata/bys7/test2.dbf' size 10m uniform size 40k;  
Tablespace created.  
  
SQL> show user  
USER is "TEST"  
SQL> create table test1(aa number,name varchar2(128)) tablespace test2 storage (MINEXTENTS 5);  
Table created.  
SQL> select owner,SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID from dba_extents where SEGMENT_NAME='TEST1';  
OWNER                          SEGMENT_NAME TABLESPACE_NAME  EXTENT_ID  
------------------------------ ------------ --------------- ----------  
TEST                           TEST1        TEST2                    0  
TEST                           TEST1        TEST2                    1  
TEST                           TEST1        TEST2                    2  
TEST                           TEST1        TEST2                    3  
TEST                           TEST1        TEST2                    4  
  
SQL> insert into test1 select object_id,object_name from dba_objects;  
13723 rows created.  
SQL> commit;  
Commit complete.  
SQL> select owner,SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID from dba_extents where SEGMENT_NAME='TEST1';  
OWNER                          SEGMENT_NAME TABLESPACE_NAME  EXTENT_ID  
------------------------------ ------------ --------------- ----------  
TEST                           TEST1        TEST2                    0  
TEST                           TEST1        TEST2                    1  
TEST                           TEST1        TEST2                    2  
TEST                           TEST1        TEST2                    3  
TEST                           TEST1        TEST2                    4  
TEST                           TEST1        TEST2                    5  
TEST                           TEST1        TEST2                    6  
TEST                           TEST1        TEST2                    7  
TEST                           TEST1        TEST2                    8  
TEST                           TEST1        TEST2                    9  
TEST                           TEST1        TEST2                   10  
TEST                           TEST1        TEST2                   11  
12 rows selected.  
  
SQL>truncate table test1;  
Table truncated.  
  
SQL> select owner,SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID from dba_extents where SEGMENT_NAME='TEST1';  
  
OWNER                          SEGMENT_NAME TABLESPACE_NAME  EXTENT_ID  
------------------------------ ------------ --------------- ----------  
TEST                           TEST1        TEST2                    0  
TEST                           TEST1        TEST2                    1  
TEST                           TEST1        TEST2                    2  
TEST                           TEST1        TEST2                    3  
TEST                           TEST1        TEST2                    4  
  
SQL> select SEGMENT_NAME,TABLESPACE_NAME,BYTES/1024 kb,EXTENTS,BLOCKS,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS from dba_segments where SEGMENT_NAME='TEST1';  
SEGMENT_NAME TABLESPACE_NAME         KB    EXTENTS     BLOCKS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS  
------------ --------------- ---------- ---------- ---------- -------------- ----------- ----------- -----------  
TEST1        TEST2                  200          5         25         204800       40960           1  2147483645  

实验2:创建表时不指定storage (MINEXTENTS参数 使用默认值

SQL> create table test2 tablespace test2 as select object_id,object_name from dba_objects;  
Table created.  
  
SQL> set pagesize 1000  
SQL> select owner,SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID from dba_extents where SEGMENT_NAME='TEST2';  
OWNER                          SEGMENT_NAME TABLESPACE_NAME  EXTENT_ID  
------------------------------ ------------ --------------- ----------  
TEST                           TEST2        TEST2                    0  
TEST                           TEST2        TEST2                    1  
TEST                           TEST2        TEST2                    2  
TEST                           TEST2        TEST2                    3  
TEST                           TEST2        TEST2                    4  
TEST                           TEST2        TEST2                    5  
TEST                           TEST2        TEST2                    6  
TEST                           TEST2        TEST2                    7  
TEST                           TEST2        TEST2                    8  
TEST                           TEST2        TEST2                    9  
TEST                           TEST2        TEST2                   10  
TEST                           TEST2        TEST2                   11  
12 rows selected.  
  
SQL> truncate table test2;  
Table truncated.  
  
SQL> select owner,SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID from dba_extents where SEGMENT_NAME='TEST2';  
OWNER                          SEGMENT_NAME TABLESPACE_NAME  EXTENT_ID  
------------------------------ ------------ --------------- ----------  
TEST                           TEST2        TEST2                    0  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值