Data Pump Import速度問題之解決過程

post0發表於2007-02-10
Data Pump Import速度問題之解決過程[@more@]平臺:HP安騰2
作業系統:Redhat Enterprise Linux 4
資料庫版本:Oracle 10.2.0.2
架構:6節點RAC

問題現象:
用資料泵方法匯出一個表的兩個分割槽資料很快,而匯入卻很慢

資料:
用資料泵匯出,速度為29萬條/秒(37MB/秒)
用資料泵匯入,速度為300條/秒(39KB/秒)

解決過程:
開始沒有看到環境,個人猜測也許是6節點的RAC在資料匯入的時候同步Buffer Cache導致速度變慢,也許將涉及到Oracle本身的bug,所以建議使用者可以先在單節點的同樣環境中作一次測試,但是客戶暫時沒有單節點的環境。
於是在同樣的6節點RAC環境中再作一個Data Pump匯入,期間檢查V$SESSION_WAIT,多次執行,發現確實有gc相關的等待事件,但是並不明顯,然後檢視V$ACTIVE_SESSION_HISTORY,用下面的SQL:


select sum(time_waited), event
from v$active_session_history
where session_id = 501
group by event
order by 1 desc;
'


此時問題很明顯的暴露出來了,大量的時間耗費在log file switch completion和log file switch (checkpoint incomplete)這兩個事件上,於是檢視資料庫的redo logfile大小,發現只有50M。
由於客戶的資料庫執行在非歸檔模式上,所以直接將redo檔案加大到1G,再次測試,速度超乎想像。客戶很爽,我也很爽。

結論:
1。在沒有V$ACTIVE_SESSION_HISTORY的10g以前版本中,不要奢望能透過頻繁查詢V$SESSION_WAIT來定位問題。
2。Oracle的bug雖然不少,但是也沒有想象中那麼多。

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

相關文章