oracle 11g 的新特性,當表無數據時,不分配segment來節省空間,從而導致我們在導出數據庫表結構時不能夠導出空表結構,此時的解決辦法如下:
辦法一:向空表中insert數據,再rollback就會產生segment,然後便可以導出空表結構 了。
當然在空表很多的情況下,那我們處理起來就比較麻煩了,需要用sql批處理這些空表:
/*首先查出當前用戶下所有的空表*/
select table_name from user_tables where NUM_ROWS=0;
/*再查出相關的sql語句,最後執行查出來的語句*/
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
辦法二:在創建好數據庫時並設置deferred_segment_creation參數
/*查看deferred_segment_creation的狀態*/
show parameter deferred_segment_creation;
/*將狀態改爲false表示對所有的表都創建segment*/
alter system set deferred_segment_creation=false;
注意:deferred_segment_creation的狀態一定要在創建表之前修改才生效,所以如果處理已經創建了表的情況用第一種方法。