下面测试Oracle 11g开始的新特性truncate的增强和延迟段空间创建。
Oracle从11g开始,当用户创建一张空表的时候不会先分配段和空间,只有当对这张表插入第一行数据的时候才分配段和空间。
这就解决了有很多表是空的但是占用大量的磁盘空间。
测试11g延迟段创建和truncate
用户下有一张新表
SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- TEST1 TABLE SQL> select segment_name,bytes from user_segments; ----还没有给分配空间 no rows selected SQL> insert into test1 select * from dba_objects where rownum<2; -----插入一行记录 1 row created. SQL> select segment_name,bytes from user_segments; ----分配空间 SEGMENT_NAME BYTES ------------------------------ ---------- TEST1 65536 SQL> commit; Commit complete. SQL> alter table test1 allocate extent; ------手动给表分配一个区 Table altered. SQL> select segment_name,bytes from user_segments; SEGMENT_NAME BYTES ------------------------------ ---------- TEST1 131072 SQL> truncate table test1; ------使用不加子句的truncate Table truncated. SQL> select segment_name,bytes from user_segments; -----只是删除到最小的区 SEGMENT_NAME BYTES ------------------------------ ---------- TEST1 65536 SQL> truncate table test1 drop all storage; -----使用11g中新加的子句drop all stroage Table truncated. SQL> select segment_name,bytes from user_segments; -----段全部被回收 no rows selected
时间: 2024-11-26 08:40:52