oracle 11g 匯出空表 exp 匯出

2021-07-02 18:05:43 字數 1103 閱讀 7150

oracle 11g 匯出空表  exp 匯出 

在沒有dba許可權的條件下,用exp 匯出是乙個不錯的選擇,但是在遇到空表的情況下 11g預設不匯出空表,則可以進行如下操作

對已存在的表 執行如下 ,要經過統計分析後 num_rows=0 才準確

分析表例子: analyze table test1 compute statistics 

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

oracle11g預設對空表不分配segment,故使用exp匯出oracle11g資料庫時,空表不會匯出。

設定deferred_segment_creation 引數為false後,無論是空表還是非空表,都分配segment。

在sqlplus中,執行如下命令: 

alter system set deferred_segment_creation=false;

show parameter deferred_segment_creation;

該值設定後只對後面新增的表產生作用,對之前建立的空表不起作用

示例如下,只舉例第一種情況 在scott 使用者下

建立表create table scott.test1(id number(6),name varchar2(20));   

分析表analyze table scott.test1 compute statistics 

匯出scott 使用者下的表

無 test1 表 

然後給 test1 分配空間

alter table scott.test1 allocate extent;

再進行 匯出操作,截圖如下

空表 test 1 成功匯出

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 調整再建表 這兩種...