11g参数之deferred_segment_creation,解决exp不能导出空表问题

版权声明:茅坑的石头 https://blog.csdn.net/lishuoboy/article/details/89290828

介绍

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。

猜你喜欢

转载自blog.csdn.net/lishuoboy/article/details/89290828
今日推荐