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。