deferred_segment_creation
布尔型
默认值为true
这个参数10gR2中是没有的,11g中才有
从字面意思也可以看出来,当这个参数设置为true时,当创建一个表的时候,不给它分配segment,即不分配空间,当向这个表中插入第一条数据的时候才开始分配segment。
设置为true的优点:在创建一系列表的时候,若事先已知许多表并没有数据,可以指定这个参数为true。这样可以节省空间,也可以增加建表速度。
缺点:使用exp导出的时候,不会导出没有segment分配的表。使用expdp可以导出空表。
查看该参数当前设置可以使用
show parameter deferred_segment_creation
这个参数可以动态修改,使用
alter system/session set deferred_segment_creation=true/false;
更改后,之前延迟分配segment的表并不会受到影响,仍然为空表。
查询某schema中所有未分配segment的表可以使用以下语句
select *
from user_tables
where segment_created = 'NO'
若想为这些未分配segment的表分配空间,可以使用语句
select 'alter table ' || table_name || ' allocate extent;'
from user_tables
where segment_created = 'NO'
为所有空表分配segment,之后就可以进行exp导出了。
如果表插入数据后被truncate,则会保留segment。
————————————————
版权声明:本文为CSDN博主「践行见远」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jx_jy/article/details/41311769