Oracle 11g使用exp命令導出數據行rows爲零的空表
使用Oracle 11g的exp命令導出用戶數據庫表的時候,有的rows爲0的空表不能導出,原因是Oracle 11g新增了一個特性,deferred_segment_creation,其含義是段延遲創建,默認參數爲true。
當新建數據表且參數爲true時,沒有向其中插入數據,那麼這個表不會立即分配segment,也就是不佔數據空間,即表不分配segment以節省空間,所以這些表也沒能導出來。
在系統表user_tables中也可以看到segment_treated的字段裏是“NO”或者“YES”說明了該表是否分配了segment。
解決辦法:
1、select 'alter table ' ||table_name ||' allocate extent;' from user_tables where segment_created='NO';
2、執行生成的sql語句,例如:
alter table table_name allocate extent;
這樣就可以給每一張已經存在的表來分配 segment,然後就可以利用exp 導出。