Oracle 11gR2 用exp無法匯出空表解決方法

wuweilong發表於2014-09-10

Oracle 11gR2 exp無法匯出空表解決方法


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


解決方法:
一、insert一行,再rollback就產生segment了。
該方法是在在空表中插入資料,再刪除,則產生segment。匯出時則可匯出空表。

二、
設定deferred_segment_creation引數
該引數值預設是TRUE,當改為FALSE時,無無是空表還是非空表,都分配segment。修改SQL語句:

  1. SQL> alter system set deferred_segment_creation=false scope=both;
需注意的是:該值設定後對以前匯入的空表不產生作用,仍不能匯出,只能對後面新增的表產生作用。如需匯出之前的空表,只能用第一種方法。

三、
用以下SQL語句查詢空表

  1. SQL>select \'alter table \'||table_name||\' allocate extent;\' from user_tables where num_rows=0;
把查詢結果匯出,執行匯出的語句,強行修改segment值,然後再匯出即可匯出空表,
注意:資料庫插入資料前,修改
11g_R2引數可以匯出空表

查詢空表並生成更新表語句:

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20674423/viewspace-1266754/,如需轉載,請註明出處,否則將追究法律責任。

相關文章