小議IMP操作引數COMMIT=Y(三)
前一段時間在論壇上看到imp的COMMIT引數問題,於是打算簡單總結一下。
這篇文章討論COMMIT=Y對資料完整性的影響。
小議IMP操作引數COMMIT=Y(一):http://yangtingkun.itpub.net/post/468/254854
小議IMP操作引數COMMIT=Y(二):http://yangtingkun.itpub.net/post/468/255388
匯入時設定COMMIT=Y不僅會帶來效能方面的影響,更重要的時,設定了這個引數有可能導致資料的一致性出現問題,尤其是配合IGNORE=Y引數一起使用的時候。
如果設定了COMMIT=Y,那麼匯入過程會在一條資料或buffer中所有的資料插入後,進行提交。這意味著匯入操作不再是一個事務。因此,當匯入過程中途失敗,Oracle回滾的只是最後一次插入的事務,而前面插入的資料都以及提交了。這可能意味著使用者將很難恢復到匯入開始的時刻,而且也很難繼續匯入未完的資料。
當然,兩種情況可以避免出現這種問題。第一種情況就是匯入的表本身不存在,或者是空的。這樣可以簡單的DROP TABLE或TRUNCATE TABLE清除所有已經匯入的資料。
第二種情況是表本身有主鍵、唯一約束或唯一索引。這種情況雖然不是很容易恢復到匯入之前的狀態,但是利用主鍵等唯一約束,再次執行匯入時,所有以及插入的資料在重新匯入時都會報錯,而上次未匯入的資料則可以順利匯入。這種情況的問題是,由於匯入操作會導致唯一性衝突錯誤,IMP時會報大量的錯誤,匯入效能嚴重下降。匯入的效率可能下降將近10倍。
所以在對以及存在資料的表執行IMP的時候,應該儘量的避免設定COMMIT=Y引數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69152/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小議IMP操作引數COMMIT=Y(二)MIT
- 小議IMP操作引數COMMIT=Y(一)MIT
- (轉載)小議IMP操作引數COMMIT=YMIT
- 理解exp, imp 使用direct=y 及imp commit=yMIT
- imp commit,buffer 引數MIT
- IMP中commit=y的用法~~~MIT
- imp commit引數的使用MIT
- commit_write引數MIT
- imp的buffer和commit分析MIT
- 轉:oracle EXP /IMP引數詳解Oracle
- IMP EXP常用引數,實用例子
- imp使用注意點(commit選項)MIT
- importvg 一定要帶引數 -y vgname hdiksnameImport
- imp中的indexfile引數解決imp指定表空間問題Index
- 【IMPDP】【IMP】SQL指令碼盡收眼底——SHOW引數與SQLFILE引數對比SQL指令碼
- ROUND(x,y)與TRUNC(x,y)函式中y引數值為省略、空值與null的區別函式Null
- mysql效能引數innodb_flush_log_at_trx_commitMySqlMIT
- EXP匯出引數compress=y(n)的區別
- Java(三)引數Java
- commit_write,commit_logging,commit_wait引數和oracle redo行為MITAIOracle Redo
- 【IMP】使用IMP的SHOW引數輕鬆獲取EXP命令的DUMP檔案內容
- innodb_flush_log_at_trx_commit引數的直白理解MIT
- 轉摘:ORACLE:IMP工具ignore=y的一個問題Oracle
- 常用操作 / 獲取引數
- [20171105]exp imp buffer引數解析.txt
- DBMS_SESSION包小議(三)Session
- mysql的innodb_flush_log_at_trx_commit引數實驗MySqlMIT
- 小程式內引數和掃碼引數統一
- EXP/IMP 學習(三)
- oracle 10g impdp與imp 引數選項不同地方Oracle 10g
- 常用URL引數操作方法
- oracle exp_imp小記Oracle
- pandas引數設定小技巧
- imp匯入時default 按table提交,使用commit按buffer提交MIT
- exp和imp的詳細操作
- 引數匹配順序——Python學習之引數(三)Python
- [AlwaysOn] T-SQL語法:REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT引數SQLUIsynchronizedMIT
- MySQL:Innodb:innodb_flush_log_at_trx_commit引數影響的位置MySqlMIT