凡事都不是完美的。不論哪種計算機語言,不論它的實際操作技巧是如何靈活,都是避免不掉它的缺陷之處,當然在Oracle exp備份導入時。我們也需要注意一些在實際操作中經常發生的事項。
Oracle exp備份導入注意事項:
(1) 數據庫對象已經存在
一般情況, 導入數據前應該徹底刪除目標數據下的表, 序列, 函數/過程,觸發器等;數據庫對象已經存在, 按缺省的imp參數, 則會導入失敗如果用了參數ignore=y, 會把Oracleexp文件內的數據內容導入如果表有唯一關鍵字的約束條件, 不合條件將不被導入如果表沒有唯一關鍵字的約束條件, 將引起記錄重復。
(2) 數據庫對象有主外鍵約束
不符合主外鍵約束時, 數據會導入失敗解決辦法: 先導入主表, 再導入依存表disable目標導入對象的主外鍵約束, 導入數據後, 再enable它們
(3) 權限不夠
如果要把A用戶的數據導入B用戶下, A用戶需要有imp_full_database權限
(4) 導入大表( 大於80M ) 時, 存儲分配失敗
默認的EXP時, compress = Y, 也就是把所有的數據壓縮在一個數據塊上.導入時, 如果不存在連續一個大數據塊, 則會導入失敗.導出80M以上的大表時, 記得compress= N, 則不會引起這種錯誤.
(5) imp和exp使用的字符集不同
如果字符集不同, 導入會失敗, 可以改變unix環境變量或者NT注冊表裡NLS_LANG相關信息.導入完成後再改回來.
(6) imp和exp版本不能往上兼容
imp可以成功導入低版本exp生成的文件, 不能導入高版本Oracleexp生成的文件
使用方法:
例題格式及說明:
1.普通數據庫全部導出和導入
exp 用戶/密碼@dbName file=路徑.dmp full=y --還有其他的參數,看需要進行填寫
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=y commit=y ignore=y --全部導出
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2 --全部導入