oracle 11g用exp無法導出空表的解決方案


Oacle 11g中有個新特性,當表無數據時,不分配segment,以節省空間,當我們用exp導出空表時,無法導出。

 

解決方法是兩個方面,一是處理現有的空表,讓其能導出;二是設置參數,讓后續的新的空表也可以導出

 -----------------------------------處理一           -----------------------------------------------------------------------------------

查詢所有空表並分配segment,使用以下語句查詢生成修改空表設置的SQL:

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

 

 

將輸出的SQL復制到SQL執行窗口,並執行。

 

 -----------------------------------處理二           -----------------------------------------------------------------------------------

設置系統參數,讓后續新表自動分配segment,查詢系統參數,該參數值默認是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment.

查詢語句:show parameter deferred_segment_creation;

將這個參數修改為FALSE,修改語句為:

alter system set deferred_segment_creation=false;

再次查詢確認參數是否修改成功:

show parameter deferred_segment_creation;

可見已經修改為FALSE了,如圖:

 

 

這樣再使用exp導出,就可以正常導出空表了,如圖所示,顯示為0行的表也能導出了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM