L
o
a
d
i
n
g
.
.
.

ホーム

お知らせ

製品・ソリューション

サービス

導入事例・パートナー

EXEM Academy・ブログ

会社情報

採用情報

2015.08.15

gc buffer busy

目次



概要

gc buffer busyイベントは、ローカルプロセスが読み込もうとしているブロックが現在、リモートノードの処理によって使用中であることを示すイベントです。
gc buffer busyイベントは、buffer busy waitsイベントやread by other sessionイベントのグローバルバージョンと言えます。
サーバプロセスが特定のブロックを使用する時、バッファ・ロックの競合が生じると待機が発生します。
バッファ・ロックの競合が発生した場面によって、これらの待機イベントの中から、一つを選択し、使用することになります。

関連資料 –
AsterくんがガイドするOracle Event Tour : gc buffer busy


待機パラメータと待機時間


待機パラメータ

gc buffer busyイベントの待機パラメータは次のようになります。

  • P1 : file#
  • P2 : Block#
  • P3 : id


待機時間


チェックポイントとソリューション


gc buffer busyの対策

バッファ・ロックの競合が発生した原因と、それに該当する待機イベントは次になります。

  • 同一インスタンスの別プロセスが、ディスクにてブロックを読み込み中の場合、I/Oの作業が完了するまでread by other sessionイベントで待機します。
    I/O作業を処理するプロセスはdb file sequential readのイベントやdb file scattered readイベントで待機します。
  • また、同一インスタンスの別プロセスに、別のインスタンスからブロックが転送されている場合、転送が完了するまでgc buffer busyイベントで待機します。

gc buffer busyイベントの発生原因と解決方法はbuffer busy waitsイベントの発生原因・解決方法と一致します。その内容は次になります。

  • gc buffer busyイベントが発生する原因として最も一般的だと言われるのが、ホット・ブロックです。したがって原因となるホット・ブロックを分散させることによって問題を解決できます。
    セグメントレベルのパーティションを適用、索引の右偏り現象の解消、シーケンスのキャッシュサイズ増大、PCTFREEの増加、等の方法があります。
  • フリーリスト管理(FLM)を使用する場合は、セグメントヘッダーブロックがbuffer競合の原因になることがあります。
    Oracle 10g R2からは、基本的に自動セグメント領域管理(ASSM)が使用されるためFLMの環境において、性能問題が生じる可能性が低くなります。もしFLMを使用する環境であるなら、
    必ずFREELIST GROUPSの属性をノード数に合わせ、セグメントヘッダーブロックの競合を最小限にする必要があります。
  • SQLのチューニングでアクセスするブロック範囲を少なくしましょう。
  • 同じセグメントに対する大量のDML作業が、複数のノードにて同時多発的に発生すると、広い範囲でバッファ・ロックの競合が発生する可能性があります。
    この場合は、アプリケーションを適宜に分散させ実行することで解決できます。