oracle 11g exp導出空表

oracle 11g 默認對空表不分配segment,故使用exp導出Oracle11g數據庫時,空表不會導出。默認情況下,deferred_segment_creation 參數爲TRUE,將參數

deferred_segment_creation 參數設置爲FALSE後,無論是空表還是非空表,都分配segment。

在sqlplus 中連接數據庫:

(1)、查看該參數的值

 SQL> show parameter deferred_segment_creation;


(2)、修改該參數值爲false

   SQL> alter system set deferred_segment_creation=false;

 注:  該值設置後只對後面新增的表產生作用,對之前建立的空表不起作用。(我在修改此參數之前創建一張空表tab1,修改之後又創建一直表tab2,在導出操作時,確實沒有導出表tab1 而導出表tab2。)


------------------------------------------------------------------------------------------------------------------------------------------------------------------------

deferred_segment_creation=false之前的空表如何才能導出呢???

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

查找空表:

SQL>  select table_name from user_tables where num_rows=0 or num_rows is null;

方法1:insert 一行,然後在rollback 就產生segment了。該方法是在空表中插入數據再刪除,則產生segment。導出時則可導出空表。

方法2:可以使用手工爲空表分配Extent的方式,來解決之前建立的空表的問題。

SQL> alter table tablename allocate extent;

方法3:不用exp ,使用expdp工具可以導出空表。


發佈了55 篇原創文章 · 獲贊 5 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章