2019.01.25
DB CACHE ADVICE
目次
概要
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が発生することに注意しなければなりません。
Analysis Case
DB_CACHE_ADVICEパラメータ設定によるLatch待機現象
マックスゲージを介して問題が発生したインスタンスの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