imp commit,buffer 引數
imp commit,buffer 引數
imp user/password fromuser=user touser=user file=E:\11.dump tables= table_name buffer= 209715200 commit =yes feedback=100000 indexes=no ignore=yes
default COMMIT=N
COMMIT=Y 的優點在於可以避免大資料量匯入的時候,對回滾段造成的壓力。
在Oracle中頻繁的COMMIT資料不但不會帶來效能的提升,反而會降低COMMIT的效能。透過IMP匯入時,如果設定了COMMIT=Y,效能明顯會比不設定COMMIT=Y要差。
COMMIT=Y不會針對每條記錄去COMMIT的,而是針對BUFFER中容納的所有資料。可以透過加大BUFFER的方式來避免COMMIT=Y帶來的效能影響。但是這個觀點有一個前提。那就是表中不能包含LONG、LOB、REF、ROWID和UROWID列。如果包含了這些列,那麼陣列繫結插入將失效,每條記錄的插入之後都會執行COMMIT操作。所以,設定了COMMIT=Y後,包含這些列的表的匯入效能會嚴重下降。最後簡單說一句,Oracle的文件中除了上面的這些列,還提到了DATE列,但是根據我的發現,DATE列似乎採用的就是陣列插入的方式,懷疑文件這裡有誤。
匯入時設定COMMIT=Y不僅會帶來效能方面的影響,更重要的時,設定了這個引數有可能導致資料的一致性出現問題,尤其是配合IGNORE=Y引數一起使用的時候。如果設定了COMMIT=Y,那麼匯入過程會在一條資料或buffer中所有的資料插入後,進行提交。這意味著匯入操作不再是一個事務。因此,當匯入過程中途失敗,Oracle回滾的只是最後一次插入的事務,而前面插入的資料都以及提交了。這可能意味著使用者將很難恢復到匯入開始的時刻,而且也很難繼續匯入未完的資料。當然,兩種情況可以避免出現這種問題。第一種情況就是匯入的表本身不存在,或者是空的。這樣可以簡單的DROP TABLE或TRUNCATE TABLE清除所有已經匯入的資料。第二種情況是表本身有主鍵、唯一約束或唯一索引。這種情況雖然不是很容易恢復到匯入之前的狀態,但是利用主鍵等唯一約束,再次執行匯入時,所有以及插入的資料在重新匯入時都會報錯,而上次未匯入的資料則可以順利匯入。這種情況的問題是,由於匯入操作會導致唯一性衝突錯誤,IMP時會報大量的錯誤,匯入效能嚴重下降。匯入的效率可能下降將近10倍。
所以在對以及存在資料的表執行IMP的時候,應該儘量的避免設定COMMIT=Y引數。
Default: n
Specifies whether Import should commit after each array insert. By default, Import commits only after loading each table, and Import performs a rollback when an error occurs, before continuing with the next object.
If a table has nested table columns or attributes, the contents of the nested tables are imported as separate tables. Therefore, the contents of the nested tables are always committed in a transaction distinct from the transaction used to commit the outer table.
If COMMIT=n and a table is partitioned, each partition and subpartition in the Export file is imported in a separate transaction.
For tables containing LOBs, LONG, BFILE, REF, ROWID, or UROWID columns, array inserts are not done. If COMMIT=y, Import commits these tables after each row.
come from:http://space.itpub.net/673608/viewspace-626821
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-734109/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- imp commit引數的使用MIT
- imp的buffer和commit分析MIT
- 小議IMP操作引數COMMIT=Y(三)MIT
- 小議IMP操作引數COMMIT=Y(二)MIT
- 小議IMP操作引數COMMIT=Y(一)MIT
- (轉載)小議IMP操作引數COMMIT=YMIT
- [20171105]exp imp buffer引數解析.txt
- imp匯入時default 按table提交,使用commit按buffer提交MIT
- commit_write引數MIT
- 理解exp, imp 使用direct=y 及imp commit=yMIT
- IMP中commit=y的用法~~~MIT
- 轉:oracle EXP /IMP引數詳解Oracle
- IMP EXP常用引數,實用例子
- imp使用注意點(commit選項)MIT
- imp中的indexfile引數解決imp指定表空間問題Index
- 【IMPDP】【IMP】SQL指令碼盡收眼底——SHOW引數與SQLFILE引數對比SQL指令碼
- IMP-00032: SQL statement exceeded buffer lengthSQL
- mysql效能引數innodb_flush_log_at_trx_commitMySqlMIT
- commit_write,commit_logging,commit_wait引數和oracle redo行為MITAIOracle Redo
- 【IMP】使用IMP的SHOW引數輕鬆獲取EXP命令的DUMP檔案內容
- innodb_flush_log_at_trx_commit引數的直白理解MIT
- mysql引數之innodb_buffer_pool_size大小設定MySql
- MySQL服務端innodb_buffer_pool_size配置引數MySql服務端
- mysql的innodb_flush_log_at_trx_commit引數實驗MySqlMIT
- oracle 10g impdp與imp 引數選項不同地方Oracle 10g
- MySQL change buffer介紹和相關引數調整建議MySql
- mysql innodb_log_file_size 和innodb_log_buffer_size引數MySql
- [AlwaysOn] T-SQL語法:REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT引數SQLUIsynchronizedMIT
- MySQL:Innodb:innodb_flush_log_at_trx_commit引數影響的位置MySqlMIT
- 一個commit引發的思考MIT
- exp匯出compress引數導致的imp時擴充套件太大套件
- 執行緒相關記憶體引數sort_buffer/join_buffer等的記憶體分配時機執行緒記憶體
- mysql插入慢之所innodb_flush_log_at_trx_commit引數的意義MySqlMIT
- 關於對innodb_flush_log_at_trx_commit引數的一些理解MIT
- kettle 引數——變數引數和常量引數變數
- exp\imp 遇到作業系統轉移字元問題(比如query引數裡的where)作業系統字元
- create table中的buffer pool 設定 KEEP 及CACHE 引數的聯絡及區別
- Oracle引數-隱藏引數Oracle