I/Oの待機イベント

V$SESSION_EVENTビューではセッション開始後のイベントの待機の合計情報を取得することができる。。

SELECT 	
	SID,
	EVENT           as 待機イベントの名前,
	TOTAL_WAITS     as 待機回数,
         TIME_WAITED/100 as 待ち時間計_秒,
	WAIT_CLASS 
FROM 	V$SESSION_EVENT
ORDER BY 1

また、直近に発生した待機イベントはV$SESSION_WAIT_HISTORYで確認することができる。

SELECT 	*
FROM 	V$SESSION_WAIT_HISTORY
ORDER BY 1



★I/O関係の待機イベントの種類と対応策


db file parallel write
→DBWRプロセスによる書出しをする際の待機イベント。
書込み負荷が問題となっている可能性がある。


db file single write
→チェックポイント時のヘッダー書込みに関連する待機イベント。


db file scattered read
→フルスキャンによる読込みで発生する待機イベント。
1イベントでマルチブロック単位の読み込みを行う。


対応策としては

1.索引スキャンするようにする (→インデックスを作成する)

2.I/O性能の改善(→ストレージ構成の変更やディスク数を増やす)

3.キャッシュヒット率を向上させる
(ただし、大きなサイズのファイルにアクセスしているのが原因であればキャッシュヒット率を上げても改善しない)


db file sequential read
→索引スキャンによる読込みで発生する待機イベント。
1イベントで1ブロックの読み込みを行う。


キャッシュヒット率が原因であればキャッシュヒット率を改善することで治ることがある( 初期化パラメータ DB_CACHE_SIZE)
ただし、大量データを読み込むときはdb file sequential read を複数回実行するよりdb file scattered read の方が適していることもある。
→統計情報が正しくない場合に発生することがある




direct path read temp
→一時ファイルに対するreadディスクソートが行われたときに発生する待機イベント。
大きなデータのソートなどを行うときにはtemp領域を使用するので、不要なソートの見直しにより改善することがある。


direct path read
→バッファキャッシュを経由しないマルチブロック単位の読み込みで発生する待機イベント。