1. 程式人生 > >oracle11g匯出表時會發現少表,空表導不出解決方案。

oracle11g匯出表時會發現少表,空表導不出解決方案。

 

 

  一:背景引入

       oracle11g用exp命令匯出資料庫表時,有時會發現只匯出了一部分表時而且不會報錯,原因是有空表沒有進行匯出,之前一直沒有找到方法於是用最笨的方法重新建這些空表,當然在我們實際當中表的數量大時我們該怎麼辦??? oracle10g版本中沒有這樣的問題。

       於是查資料發現oracle11g有個新特性,增加了一個新特性 "deferred_segment_creation" 含義是段延遲建立,預設是true。

       具體是什麼意思呢?我們來解釋下:

       如果這個引數設定為true,你新建立了一個Table,並且沒有向其中插入資料,那麼這個表不會立即分配extend,也就是不佔資料空間,即表不分配segment以節省空間,所以這些表也沒能匯出來。在系統表user_tables中也可以看到segment_treated的欄位裡是“NO”或者“YES”說明了某張表是否分配了segment。說白了是為了可以節省少量的空間。

   我所使用的解決方法:

           >>> 建對空表分配空間的SQL命令。

         1.查詢當前使用者下的所有空表,一個使用者最好對應一個預設的表空間,命令如下:

     >SQL:  select table_name from user_tables where num_rows='0'

   2.根據上述查詢的語句,可以構建針對空表分配空間的命令語句,具體如下;

          >SQL:select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null(注意:很多教程沒有這裡,這裡是有可能位空的)

      

          上述程式碼可產生批量的修改表extent的SQL語句(有多少張空表就產生多少條),我們只需要將其生成的所有sql程式碼全部執行,就可以給每一張已經存在的表來分配                segment,就OK了。

          再用exp命令進行匯出即可。

          參考:http://blog.sina.com.cn/s/blog_5f0e9ca50101it7n.html

  一:背景引入

       oracle11g用exp命令匯出資料庫表時,有時會發現只匯出了一部分表時而且不會報錯,原因是有空表沒有進行匯出,之前一直沒有找到方法於是用最笨的方法重新建這些空表,當然在我們實際當中表的數量大時我們該怎麼辦??? oracle10g版本中沒有這樣的問題。

       於是查資料發現oracle11g有個新特性,增加了一個新特性 "deferred_segment_creation" 含義是段延遲建立,預設是true。

       具體是什麼意思呢?我們來解釋下:

       如果這個引數設定為true,你新建立了一個Table,並且沒有向其中插入資料,那麼這個表不會立即分配extend,也就是不佔資料空間,即表不分配segment以節省空間,所以這些表也沒能匯出來。在系統表user_tables中也可以看到segment_treated的欄位裡是“NO”或者“YES”說明了某張表是否分配了segment。說白了是為了可以節省少量的空間。

   我所使用的解決方法:

           >>> 建對空表分配空間的SQL命令。

         1.查詢當前使用者下的所有空表,一個使用者最好對應一個預設的表空間,命令如下:

     >SQL:  select table_name from user_tables where num_rows='0'

   2.根據上述查詢的語句,可以構建針對空表分配空間的命令語句,具體如下;

          >SQL:select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null(注意:很多教程沒有這裡,這裡是有可能位空的)

      

          上述程式碼可產生批量的修改表extent的SQL語句(有多少張空表就產生多少條),我們只需要將其生成的所有sql程式碼全部執行,就可以給每一張已經存在的表來分配                segment,就OK了。

          再用exp命令進行匯出即可。

          參考:http://blog.sina.com.cn/s/blog_5f0e9ca50101it7n.html