在11.2.0.1版本中,Oracle database推出了延迟段(Deferred Segment Creation)的特性,在11.2.0.1中,当你Create一个non-partition object时,这个Segment并没有立刻创建,
而是直到有第一行记录插入的时候才去创建这个Segment,这和我们以前的Segment的创建和空间分配方法是不一样.
引入这个特性的好处是什么呢?
●降低空间的开销
当一次创建成百上千个表时,因为很多表短时间内根本不会用到,所以可以节约大量的磁盘开销
●加快应用的部署
因为没有分配Segment,所以建表的时候仅仅是操作数据字典而已,不设计空间的分配,所以效率自然就高了很多
在11.2.0.1中,对于分区对象是不支持的,更多关于11.2.0.1中延迟段的使用限制,参阅Oracle doc。
随着11.2.0.2版本的发布,Deferred Segment Creation又有了一些新的增强,摘录如下:
◆ 既支持分区对象也支持非分区对象,同时对于分区表,新的segments创建时缺省的extent size为8M,而不再是以前的64K。
◆ 对于从11.2.0.2之前版本升级过来的系统,如果有empty tables,可以通过DBMS_SPACE_ADMIN.DROP_EMPTY_SEGMENTS 过程清除这些segments.
◆ 11.2.0.2中,truncate 命令得到了一些增强, truncate table中的"DROP ALL STORAGE" 选项可以让你象删除extents一样删除segments.
◆ 借助可以DBMS_SPACE_ADMIN.MATERIALIZE_DEFERRED_SEGMENTS可以实例化tables、partitions、and dependent objects for which segment creation was deferred