天天看點

Oracle11G R2 用exp無法導出空表解決方法  一、insert一行,再rollback就産生segment了。   二、設定deferred_segment_creation參數  三、  用以下這句查找空表

Oracle11G R2 用exp無法導出空表解決方法

作者:吳偉龍  Name:Prudence Woo

      在11G R2中有個新特性,當表無資料時,不配置設定segment,以節省空間Oracle當然在執行export導出時,空表則無法導出,但是還是有解決辦法的:

  

解決方法:

  該方法是在在空表中插入資料,再删除,則産生segment。導出時則可導出空表。

該參數值預設是TRUE,當改為FALSE時,無論是空表還是非空表,都配置設定segment。修改SQL語句:

alter system set deferred_segment_creation=false scope=both;

  需注意的是:該值設定後對以前導入的空表不産生作用,仍不能導出,隻能對後面新增的表産生作用。如需導出之前的空表,隻能用第一種方法。

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

  把查詢結果導出,執行導出的語句,強行修改segment值,然後再導出即可導出空表,

注意:資料庫插入資料前,修改11g_R2參數可以導出空表

查找空表:

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