合 Oracle中的延迟段创建(DEFERRED_SEGMENT_CREATION)
Tags: Oracle新特性DEFERRED_SEGMENT_CREATION延迟段创建
在Oracle 11.2中,当创建一个空表或者空分区时,为了加快创建速度,Oracle并不会立即分配初始段和空间,实际的表段(Table Segement)被延迟到第一行数据插入时创建。延迟段创建特性通过DEFERRED_SEGMENT_CREATION参数控制,默认为TRUE,表示开启该功能。延迟段创建可以节省空间,加快初始化过程,是面向性能和资源的一个优化。可以通过修改参数DEFERRED_SEGMENT_CREATION来关闭这个特性:
1 | ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FLASE; |
该参数为动态参数,不需要重启数据库。可以通过如下的SQL语句找到所有的空表(未分配任何区的表):
1 | SELECT SEGMENT_CREATED,TABLE_NAME FROM USER_TABLES WHERE SEGMENT_CREATED = 'NO'; |
延迟段创建的限制条件有:
① 延迟段创建不支持的表类型包括:索引组织表(Index-Organized Tables)、簇表(Clustered Tables)、全局临时表(Global Temporary Tables)、会话级临时表(Session-Specific Temporary Tables)、内部表(Internal Tables)、Typed表(Typed Tables)、AQ表(AQ Tables)和外部表(External Tables)。
② 用户SYS、SYSTEM、PUBLIC、OUTLN和XDB下的表不支持延迟段创建。