Oracle11g R2用EXP導出時報EXP-00011錯誤的解決方法 (轉)
用定時器 + bat腳本做oracle的備份,已經備份了幾個月了。這幾天突然發現備份出來的dmp數據完全沒法重新導入到新的數據庫中。 起初以為是版本問題,或者導出參數的問題,于是在網上不停的搜索、嘗試,最后還是沒發現問題原因。 算了還是研究一下導入日志中的錯誤,于是將日志中出錯誤的表嘗試單獨導出,居然出現EXP-00011::表不存在 錯誤,可是數據庫中明明有這個表呀。根據這個方向再上網一查,終于找到原因了,原來在11g中空表是默認是不占Segment的,導致備份導出的時候壓根就沒導出那些空表,這樣才出現備份的dmp沒法導入的問題,敢情我幾個月的備份工作都白做了。 可ORACLE 你媽X的,備份導出時沒導出空表這么大的事情你居然沒有任何提示,你他*媽的是為了創造客服賺錢的機會么? 哎,處理過程如下: 1.用system帳號進入: 1.1 查看是否為true show parameter deferred_segment_creation; 1.2 修改為false alter system set deferred_segment_creation=false; 2.用數據庫帳號登錄: 2.1 查找所有數據表為空的表 select table_name from user_tables where NUM_ROWS=0; 2.2 把這些表組成修改Segment的腳本: select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0; 2.3 將2.2中查詢的結果導出來,或者復制出來,并執行修改所有空表。 這個時候就能把所有空表導出來了。 感謝以下兩位的帖子,給了我很大幫助 http://arthas-fang.iteye.com/blog/875258 http://wanwentao.blog.51cto.com/2406488/545154posted on 2014-10-24 10:40 youngturk 閱讀(488) 評論(0) 編輯 收藏 所屬分類: Oracle