雖然談論那些隱藏的參數必定是無意義的、但那些隱藏的參數卻是有價值的、我們不得不對那些隱藏的參數"心懷敬意"
AUM下、為什麼我的Undo資料表空間只增長,不回收,現在都40多G了,還在長,是為什麼啊?
為什麼在系統不是很繁忙的時候會出現undo不夠用的情況呢,如果說不夠用,那在波峰時段應該問題更加嚴重才對?
......
有時候DBA會聽到諸如上面的一些聲音
因為有個參數叫_undo_autotune=true,undo_retention不再適用
Oracle會自行決定tuned_undo_retention,然後試圖增大undo tablespace
從10.2版本開始,oracle預設採用自動調整undo retention的方法
根據你undo tablespace的大小以及系統的繁忙程度(v$undostat中資訊)自動調整undo_retention參數
所以在10g的資料庫上你會經常發現undo tablespace永遠是滿的
因為當你undo tablespace有空閑空間時,系統自動調大undo_retention來保留更多的undo blocks
這一方法有利於時間長的查詢,但是對於典型的OLTP系統來說不太適用
因為OLTP上不太可能跑如此長時間的查詢,而且在很繁忙的 OLTP上還會導致上面所遇到的問題
Oracle真是吃力不討好
sys@ORCL> edWrote file afiedt.buf 1 select a.ksppinm name,b.ksppstvl value,a.ksppdesc description 2 from x$ksppi a,x$ksppcv b 3 where a.indx = b.indx 4* and a.ksppinm like '%_undo_autotune%' sys@ORCL> /NAME VALUE DESCRIPTION-------------------- -------- ----------------------------------------_undo_autotune TRUE enable auto tuning of undo_retention
該參數可以線上修改:
alter system set “_undo_autotune” = false;
標註一下:
如果undo不回收、resize可能是會報錯的、我遇到很多次了、一般都是、重建個undo資料表空間、然後切換過去、把以前的幹掉、通過這種方式來回收空間