Oracle 11G不能匯出空表的原因和解決方法

2021-08-20 16:32:45 字數 706 閱讀 3075

1. 原因

oracle 11g

在匯出表時,空表不能匯出,11g r2中有個新特性,當表無資料時,不分配segment,來節省空間

deferred_segment_creation

:推遲段的建立,就是不去匯出空表,來節省空間。

2.

解決方法

①設定deferred_segment_creation的值,該值的預設值為true,當改為false時,無論是空表還是非空表,都會分配segment。

在pl/sql中執行以下語句:

ps:需要注意的是,該值設定後對以前匯入的空表不產生作用,仍不能匯出,只能對後面新增的表產生作用。

②如果需要匯出之前的空表,使用以下方法。

在pl/sql中執行以下語句:

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

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

oracle11g匯出空表

該引數意思是當建立物件 如表 初始時沒有資料,是否立即建立segment。預設是true。這會導致在按使用者匯出時,沒有segment的物件不會匯出。首先執行下面的語句 select alter table table name allocate extent from user tables wh...

oracle 11g匯出空表

oracle 11g 用exp命令匯出庫檔案備份時,發現只能匯出來一部分表而且不提示錯誤,之前找不到解決方案只能把沒匯出來的表重新建建立。後來發現是所有的空表都沒有匯出來。於是想好好查查,因為在以前的10g版本中沒有這樣的問題。查資料發現oracle 11g中有個新特性 新增了乙個引數 deferr...

oracle11g 空表匯出

oracle11g的新特性,資料條數是0時不分配segment,所以就不能被匯出。解決方法 1插入一條資料 或者再刪除 浪費時間,有時幾百張表會累死的。2建立資料庫之前 使用 sql alter system set deferred segment creation false 調整再建表 這兩種...