oracle9iからはSGA領域のサイズをオンライン状態に変えることができます。これDynamic SGA機能といいます。 このように変えることができるメモリ領域はShared Pool、Buffer Cache、Large Poolの三つです。 このうちBuffer Cacheサイズを調整したときの性能を予測するAdvisory機能をDB_CACHE_ADVICEパラメータを介して提供します。 DB_CACHE_ADVICE = ONの場合Buffer Cache Advisory機能がenableされ、V$DB_Cache_Adviceビューを介して内容を確認することができます。
Syntax : DB_CACHE_ADVICE = {ON | READY | OFF} Default : OFF 設定方法 : ・Parameter File ・ALTER SYSTEM SET DB_CACHE_ADVICE= ON
V $ DB_Cache_Advice Viewには、buffer cache別現在のサイズの10%から200%までの20個のサイズのsimulation情報を記録します。各サイズごとに既存のblock参照情報を利用して、予想される物理的な読み取り数を提供します。
Buffer Cache Advisory機能の使用は、次の2つのオーバーヘッドを起こします。
-Advisory機能はbuffer cache別bookkeepingのための非常にわずかなCPUオーバーヘッドが必要です。
-MEMORY:Advisory機能は、buffer blockあたりshared poolから約700 byte程度のメモリを割り当てます。
parameterはON、OFF、READY三つの値を持つことができますが、それぞれの状態の意味は次のとおりです。
-OFF:Advisory機能がdisableされ、CPUやMEMORYオーバーヘッドがない
-ON:Advisory機能がenableされ、CPUやMEMORYオーバーヘッドが発生
-READY:Advisory機能は、disableされるが、shared poolのメモリは割り当て
READYやON時はshared poolのContentionが発生するので、十分な空き容量を確認した後の作業を行います。 もちろんOverheadが発生することに注意しなければなりません。
マックスゲージを介して問題が発生したインスタンスのCPU使用率を確認した結果、CPU使用率が24時間高く維持されており、特にUser CPUの使用率が高くなっています。
日中最も多く発生した待機イベントは、latch freeイベントです。(Idleイベントは除く) latch freeイベントはlatchを獲得していなかった場合、CPUを占有した状態で引き続きSpinでlatch獲得を試みて済み、CPU使用率の増加と関係があります。
session list機能を利用して、latch free待機イベントを検索した結果、simulator lru latchを待機するセッションが確認されます。
V$ DB_CACHE_ADVICEビューには、バッファ・キャッシュ領域ごとに10%〜200%までの合計20個のサイズのSimulation情報を記録するために、情報を記録するためにsimulator lru latchを必要とします。
多数のセッションが接続して、I/O操作を実行するときに、バッファ・キャッシュのシミュレーション情報が変更されることがあり、このときに接続しているセッションは、simulator lru latchを待機することができます。latchは特性上、獲得するまで継続して、CPUを占有しながらスピンして獲得しようとするので、多数のセッションがlatch待機時のCPU使用率が増加します。
この機能を無効にするとsimulator latchの大気現象は解消され、CPU使用率も確保されるので、DB_CACHE_ADVICE= OFFを推奨します。
外部参照のメタリンクドキュメントを参照してください。
1.DB_CACHE_ADVICE_Bug5918642