【問題產生】
11G中有個新特性,當表無數據時,不分配segment,以節省空間。導致空表不能導出
【解決方法】
①insert一行,再rollback就產生segment了。
該方法是在在空表中插入數據,再刪除,則產生segment。導出時則可導出空表。
②設置deferred_segment_creation 參數
該參數值默認是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。
【注意】:該值設置后對以前導入的空表不產生作用,仍不能導出,只能對后面新增的表產生作用。如需導出之前的空表,只能用第一種方法。最后找到一種方法,具體查看下方🌂
打開Command Window
執行SQL>
show parameter deferred_segment_creation;
執行SQL>
alter system set deferred_segment_creation=false;
查看修改
🌂處理之前的空表無法導出問題
A、先查詢一下當前用戶下的所有空表
select table_name from user_tables where NUM_ROWS=0;
B、用以下這句查找拼接空表SQL
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
C、把查詢結果導出,執行導出的語句(Command Window)。
D、然后再執行exp數據庫導出命令,這樣就能把之前空的表也導出來了