Oracle 10G 中,新创建一张新表,初始至少为这个表分配一个区。而从11.2.0.3 以上版本中,创建新表时默认一个区都不分配。只有在想表中插入第一行数据时,才会默认为表分配第一个区,如下:
建表:

查询占用空间:

通过上述测试,发现Oracle 11G 默认创建了一个区,结果与我们预期的截然不同,为什么?下面我们通过各种场景测试该现象
测试场景:
第一场景
我们进一步查询与该操作相关的参数deferred_segment_creation,默认为true

同时我们确认段默认是否会创建:

查询是TRUE ,与我们的预先的不通,我们测试一下修改一下deferred_segment_creation 参数是否会影响(SYS用户):

SYS用户下创建对象默认还是会分配一个区及段,该参数无影响,如下:


第二场景
查询是TRUE ,与我们的预先的不通,我们测试一下修改一下deferred_segment_creation 参数是否会影响(普通用户):
普通用户TEST下创建对象默认还是会分配一个区及段,该参数影响,如下:

普通用户创建表,默认不会分配区及段;
第三场景
普通用户使用system 表空间:

第四场景
设置deferred_segment_creation 参数为false

问题总结:
通过上述实验场景,发现
第一 sys 用户下创建对象默认分配区及段
第二 普通用户创建对象默认不分配区及段
第三 上述现象和表空间无关
第四 11G普通用户是否分配空间与参数deferred_segment_creation 有关系
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26342786/viewspace-2969940/ ,如需转载,请注明出处,否则将追究法律责任。