exp/imp遷移大表(大小11個G)的疑惑?請指教(已解決)

secooler發表於2007-12-02
exp/imp遷移大表(大小11個G)的疑惑?請指教

目前手中有一個工作是將一個大表,但是我估算了一下需要100小時,這個時間我是不能接受的,不知道有沒有這方面經驗的朋友可以一起討論

一下。

相關資訊如下:
資料庫版本:9.2.0.4
匯出資料庫:db1
匯入資料庫:db2


邏輯匯出語句如下:
exp user1/password@db1 file=TABLE1.dmp log=TABLE1.log tables=table1 buffer=10485760 constraints=n compress=n statistics=none

imdexes=n triggers=n grants=n

邏輯匯入語句如下:
imp user1/password@db1 file=TABLE1.dmp log=TABLE1.log ignore=y full=y constraints=n grants=n buffer=10485760 commit=y

1.回滾段確認:30G,imp匯入時加了引數commit=y,控制回滾段無限的加大
2.臨時表空間大小確認:62G
3.記憶體大小確認:127G
4.CPU顆數:32顆
5.有足夠的歸檔空間
6.使用者表空間足夠大
7.TABLE1段大小為:1.1010E+10 (11G)
8.TABLE1有98258468(1億)條資料
9.匯出後的TABLE1.dmp檔案大小為8.1G

我的問題:
1.大概跟蹤了一下進度,複製的效率開始時是在100萬條記錄/小時,按照這個速度需要4.1天的時間才能完全匯入,不能夠接受的時間長度,有

沒有提高效能的方法呢?
2.我是在歸檔模式下進行的匯入,不過設定成非歸檔是否會快一些?
3.對應的索引沒有禁止,這個表上有四個索引,其中一個為主鍵索引,如果禁掉索引以及約束會不會提高速度?
4.在imp匯入過程中,索引表空間會不會增大,這個沒有監控出來?
5.imp的原理是什麼?是轉換成sql的insert語句進行插入麼?按照我的設定,是否是每插入10M的資料就會進行提交一次?
6.9.2.0.4版本的imp可以增加並行度麼?(如果能請給出方法,目前沒有找到相應的引數)

我發現,就是現在,好像資料匯入到第3735438條時,停止了,不知道為什麼,難道在大小上有什麼限制,或者有什麼類似死鎖的事情發生?

徹底被這個任務擊沉了!有朋友有過遷移大表的經驗麼?請指導,非常感謝。




======================================================
======================================================
問題已經解決,感謝大家的幫助。在去掉索引和約束後,速度驚人!超快的完成了任務,不過在重新建立索引和加約束時很是用時。
結果證明:經驗很重要!

經驗總結

技術經驗總結:
1.根本問題是:沒有將目標端的索引和約束全部去掉,估計是在不停的插入過程中一直在掃描索引,具體的原理還得深入研究;
2.在回滾段夠大的情況下,可以不用加commit=y引數,頻繁的提交會影響效率;
3.在表比較小的情況下可以考慮使用DBLINK遷移;
4.在遷移的過程中時刻注意各種空間是否夠用(包括redolog,archivelog,undo segment,temp tablespace);
5.查詢是否有其他的因素干擾任務的進展,我的任務中就是因為after類的trigger給我添亂不少;
6.多google,多查詢,只有遇到問題,思考問題,解決問題才能迅速的提高。

工作經驗總結:
2.還是應該對手中的任務好好研究一下,定一個,考慮周全後在定使用什麼方式;
3.多向老DBA取經,不管問題多麼簡單,大家都有這麼一個過程;
4.遇到問題不可盲目的慌張,慢啟動才能快完成!
5.認真做好工作完成後的總結工作。

最後,感謝各位同行、各位朋友的幫助。

[ 本帖最後由 secooler 於 2007-12-3 21:53 編輯 ]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-555636/,如需轉載,請註明出處,否則將追究法律責任。

相關文章