oracleチューニング

待機イベントは待機イベントクラスを見て概要をつかみます

数多くある待機イベントはとても覚えきれるものではないですが、「待機イベントクラス」に分類されているのでこれをみれば概ねその意味はわかります。AWRレポートの「Top 10 Foreground Events by Total Wait Time」にも「Wait Class」項目として出力されています。

‘buffer busy waits’ は複数セッションから同一ブロックへのアクセスが発生する場合発生する待機イベントですが、「待機イベントクラス」は ‘Concurrency’ である事がわかります

SELECT e.EVENT#,e.NAME,e.PARAMETER1,e.PARAMETER2,e.PARAMETER3,e.WAIT_CLASS,e.DISPLAY_NAME FROM V$EVENT_NAME e
where e.NAME = 'buffer busy waits'
;
EVENT#NAMEPARAMETER1PARAMETER2PARAMETER3WAIT_CLASSDISPLAY_NAME
106buffer busy waitsfile#block#class#Concurrencybuffer busy waits
-- 待機イベントクラス一覧
select e.WAIT_CLASS,count(*) from V$EVENT_NAME e group by e.WAIT_CLASS
;

この表はOracleサイトから引用しています。
https://docs.oracle.com/cd/F19136_01/refrn/classes-of-wait-events.html#GUID-B30B0811-0FDC-40FC-92FC-F6726CE94736

No. WAIT_CLASS 概要
1 Concurrency 内部データベース・リソースの待機(たとえば、ラッチ)
2 User I/O ユーザーI/Oの待機(たとえば、db file sequential read)
3 System I/O バックグラウンド・プロセスI/Oの待機(たとえば、db file parallel writeのDBWR待機)
4 Administrative ユーザーが待機する原因となるDBAコマンドによる待機(たとえば、索引再作成)
5 Other

通常、システムでは発生しない待機(たとえば、wait for EMON to spawn)
※1

6 Scheduler リソース・マネージャに関連する待機(たとえば、resmgr: become active)
7 Configuration データベースの構成またはインスタンスのリソースが十分でないことによる待機(たとえば、ログ・ファイル・サイズ、共有プール・サイズなどが小さい)
8 Cluster Real Application Clustersリソースに関連する待機(たとえば、gc cr block busyなどのグローバル・キャッシュ・リソース)
9 Application ユーザーのアプリケーション・コードによる待機(たとえば、行レベル・ロックまたは明示的ロック・コマンドが原因のロック待機)
10 Queueing パイプライン化された環境における追加データ取得での遅延を示すイベントが含まれる。これらの待機イベントで費やされる時間は、パイプラインに非効率性などの問題があることを示す。この問題は、Oracle Streams、パラレル問合せ、DBMS_PIPE PL/SQLパッケージなどの機能に影響を与える。
11 Idle セッションがアクティブでない、すなわち作業(SQL*Net message from clientなど)の待機中であることを示す待機
12 Network ネットワーク・メッセージ(SQL*Net more data to dblinkなど)に関連する待機
13 Commit 1つの待機イベントのみで構成される待機クラス: コミット後のREDOログ書込み確認用待機(log file sync)

※1 Otherに含まれる待機イベントの一つである『enq: SV – contention』は、あるシーケンスを複数のセッションから同時に取得要求がかかった場合に発生しますが、これが「通常、システムでは発生しない待機」と言えるのかなぁ、、

SQL> set sqlformat ansiconsole
SQL> SELECT e.EVENT#,e.NAME,e.PARAMETER1,e.PARAMETER2,e.PARAMETER3,e.WAIT_CLASS  FROM V$EVENT_NAME e
  2* where e.NAME = 'enq: SV -  contention';
   EVENT#                     NAME    PARAMETER1    PARAMETER2    PARAMETER3    WAIT_CLASS
_________ ________________________ _____________ _____________ _____________ _____________
      995 enq: SV -  contention    type|mode     id1           id2           Other

SQL>

簡単に待機イベントを確認する方法として以下あります。(diagnostics pack ライセンス契約がされている必要あります)

スポンサーリンク
コピペで使う