還原表空間過大的解決方案

LuiseDalian發表於2014-01-10

最常用的方法就是建立新的undo表空間,然後修改undo_tablespace引數切換undo表空間到新建立的undo表空間...

還有一種方法是將undo_retention調小,一般大家的undo_retention引數都會採用預設的值10800,即事務的前映象在undo表空間中儲存3個小時;如果你的db事務非常頻繁,undo_retention就需要適當地調少,否則就得準備較大的undo表空間.

以上介紹的兩種方法是治標不治本的方法,畢竟進行表空間切換還是比較麻煩的,也增加了系統的風險;將undo_retention調小,有可能對大的事務或長時間執行的查詢有影響...

在10g,大家可以啟用automatic undo_retention tuning,想啟動automatic undo_retention tuning,需要把undo_retention設定為0,如果檢測automatic undo_retention tuning起作用呢?可以檢視v$undostat動態效能檢視中tuned_undoretention欄位,需要注意的是,自動的undo retention調優對lob的retention不受影響...

那如何才能徹底消除undo表空間爆滿呢?通常我們最好的選擇是調優查詢,降低查詢的執行時間,儘量減少長時間執行的查詢的執行時間;還有就是減少大的事務,將大的事務分解成小事務,比如用pl/sql分批處理並提交等...

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

相關文章