enq: US - contention問題 undo 使用率100%

abin1703發表於2017-08-28
enq: US - contention問題
這是oracle10g中開始出現的bug(在11.1.0.7中仍有這個BUG),當因為系統activity增加或者降低的時候,oracle SMON程式會自動ONLINE或者OFFLINE rollback segments。這樣導致某些與undo segments相關的latch或者enqueue被hold住太長時間,導致系統很多活躍session都開始等待enq: US - contention。可以同時使用以下解決方法:

1. 設定event讓SMON不自動OFFLINE回滾段。

alter system set events '10511 trace name context forever, level 1';

2. 設定引數_rollback_segment_count :表示有多少rollback segment要處於online的狀態;可以將該數值設定為資料庫最繁忙的時候的回滾段數目。

alter system set "_rollback_segment_count"=;
這裡以‘_’開頭的為隱藏引數,透過show parameter 是看不到的,可以透過以下語句:

select a.ksppinm name, b.ksppstvl value, a.ksppdesc description
from x$ksppi a, x$ksppcv b
where a.indx = b.indx
and a.ksppinm like '%_rollback_segment_count%';

3.  undo autotune bug多多。最好disable。

alter system set "_undo_autotune"= false;
這種方法就是關閉了UNDO的自動調整功能,同事也能解決掉UNDO表空間會在很長時間都一直保持著使用率是接近100%的問題。

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

相關文章