imp導出空表的方法

      在oracle11g的imp和exp的使用過程中,發現有些從來沒有被插入數據的表總是導不出來,今天在導

 

      表的時候藉機研究一下,分享給大家,希望對有此困擾的同學提供幫助。

         

           oracle11g的初始化參數deferred_segment_creation,這個參數我自己理解是延遲段的空間分配,意

 

     思是說段建立以後,如果沒有數據插入的時候,暫時不爲段分配磁盤空間,這樣節約了磁盤空間。這

      個參數的默認值爲true,及開啓這個參數。

         SQL> show parameter deferred_segment_creation;
 
                           NAME                                 TYPE        VALUE
                   ------------------------------------ ----------- ------------------------------
                   deferred_segment_creation            boolean     TRUE

 

      爲了解決這個問題,可以通過以下兩種方式:

 

      1、修改初始化參數deferred_segment_creation;

  

       SQL> alter system set deferred_segment_creation=false;
 
                 System altered      

       這樣無論有沒有插入數據的表都會分配extent,這樣我們可以使用exp將其導出,但是在修改這個參數

       之前的空表這個辦法是解決不了的,這個很好理解,所以我們介紹第二種方法;

 

         2、手動爲空表分配extent;

         SQL> alter table t_oa_staff allocate extent;
 
                    Table altered

         這樣我們就可以講沒有插入過數據的表使用exp導出了,爲了批量做這件事情,我採用

 

        

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

                 2  /

                25 rows selected
 
          SQL>

 

          將查詢的數據導出後批量執行下,問題解決了;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章