使用oracle 11g的朋友可能糾結過這樣的問題,exp命令匯出來的資料會莫名其妙的缺少一些表,分析過程中會發現這些表都是未插入過記錄的空表。問題造成的原因是oracle 11g引入了乙個新特性,當新建表未插入資料的時候,伺服器為了節約儲存空間預設不會為這張表建立segment,所以我們匯出資料的時候就導不出來空表資訊,最終導致程式出錯。
解決辦法:
修改配置引數
sqlplus /nolog
sql>connect system/password as sysdba;
sql>show parameter deferred_segment_creation;
你會看到它預設為true,修改。
sql>alter system set deferred_segment_creation=false;
重啟oracle服務。
設定以後再建立的新錶不插入資料也可以被匯出,但更改引數之前的空表仍未建立segment,需要手工對它們插入資料就可以生成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 調整再建表 這兩種...