6.1.2 データベース統計および待機イベント

Oracle Databaseは、一連の動的パフォーマンス・ビュー(V$ビューとも呼ばれる)でパフォーマンス情報を提供します。

動的パフォーマンス・ビューには、多くのデータベース統計および待機イベントが含まれます。データベース管理者は、動的パフォーマンス・ビューを使用して、個々のSQL操作およびデータベース・セッションに対して詳細でカスタマイズされた監視を実行できます。動的パフォーマンス・ビューは、自動ワークロード・リポジトリ(AWR)およびその他のOracle Database監視ツール(SQLモニターなど)の主要な情報ソースでもあります。

次の各項では、Exadata固有の情報を含む主な動的パフォーマンス・ビューについて説明します。

V$SYSSTAT

V$SYSSTATには、Exadataストレージ・サーバーに関連するI/O統計など、現在のデータベース・インスタンスに関連する様々なシステム全体の統計が含まれます。

たとえば、次の問合せを使用して、Exadataストレージ・サーバーに関連するI/O統計を表示できます。

SQL> SELECT name, value
     FROM v$sysstat
     WHERE name like '%cell%' or name like 'physical%'
     ORDER BY name;

これらの統計は、AWRレポートのグローバル・アクティビティ統計セクションまたはインスタンス・アクティビティ統計セクションにもあります。

V$SESSION

V$SESSIONには、現在アクティブなデータベース・セッションの様々な統計および待機イベントが含まれます。

たとえば、次の問合せを使用して、現在セル・イベントを待機しているセッションの数を示すサマリーを表示できます。

SQL> SELECT event, count(*)
     FROM v$session
     WHERE event like 'cell%'
       AND wait_time = 0  -- session currently waiting
     GROUP BY event
     ORDER BY count(*) desc;

次の問合せは、現在セル・イベントを待機しているセッションのイベント詳細を表示します。

SQL> SELECT event, p1, p2, p3
     FROM v$session
     WHERE event like 'cell%'
       AND wait_time = 0;

V$SESSIONのセル待機イベントの場合:

  • P1列は、セルのハッシュ番号を識別します。V$CELLビューを使用して、セルのハッシュ番号からセルを識別できます。
  • P2列は、ディスクのハッシュ番号を識別します。V$ASM_DISKビューを使用して、ディスクのハッシュ番号からディスク名を識別できます。

V$SESSION_EVENT

V$SESSION_EVENTは、セッション別のイベントの待機情報を示します。

たとえば、次の問合せを使用して、現在のセッションの待機イベントのサマリーを表示できます。この問合せの出力を調べることで、Exadataストレージ・サーバー・イベントの待機時間と、データベース内の他のイベントの待機時間を比較できます。

SQL> SELECT event, total_waits, time_waited_micro, time_waited_micro/decode(total_waits, 0, null, total_waits) avg_wait_time
     FROM v$session_event
     WHERE wait_class != 'Idle'
       AND sid = userenv('SID')
     ORDER BY time_waited_micro desc;

V$SYSTEM_EVENT

V$SYSTEM_EVENTは、イベントの待機合計に関するシステム全体の情報を示します。

次の問合せを使用して、現在のデータベース・インスタンスの起動以降の待機イベントのサマリーを表示できます。

SQL> SELECT event, total_waits, time_waited_micro, time_waited_micro/decode(total_waits, 0, null, total_waits) avg_wait_time
     FROM v$system_event
     WHERE wait_class != 'Idle'
     ORDER by time_waited_micro desc;

V$SYSTEM_EVENTの情報は、AWRレポートの待機イベント統計セクションに含まれています。

V$ACTIVE_SESSION_HISTORY

V$ACTIVE_SESSION_HISTORYは、システム上のアクティブ・セッションの履歴を保持します。ここでのアクティブの定義は、CPUを使用しているか、アイドル状態でない待機イベントを待機していることです。セッションごとに、V$ACTIVE_SESSION_HISTORYには、SQL実行計画や待機イベントの詳細(Exadataストレージの相互作用に関する情報など)など、セッションの実行内容に関する多くの情報が含まれます。

たとえば、次の問合せを使用して、過去5分間のレイテンシが10ミリ秒を超えるセル・ブロックの読取りを表示できます。


SQL> SELECT sample_time, p1, p2, time_waited
     FROM v$active_session_history
     WHERE event = 'cell single block physical read'
       AND wait_time = 0  -- currently waiting
       AND sample_time > sysdate - 5/1440  -- past 5 minutes
       AND time_waited > 10000
     ORDER by time_waited desc;

AWRレポートのアクティブ・セッション履歴(ASH)レポート・セクションは、V$ACTIVE_SESSION_HISTORYに基づいています。Oracle Databaseには、より詳細なアクティブ・セッション履歴(ASH)レポートも用意されています。

V$SQL

V$SQLおよび関連ビュー(V$SQLAREAV$SQLAREA_PLAN_HASHV$SQLSTATSV$SQLSTATS_PLAN_HASHなど)には、データベース・インスタンスで処理されたSQL文の情報および統計が含まれます。

V$SQLおよび関連ビューには、Exadataストレージの相互作用に関する情報を含む次の列が含まれます。

  • PHYSICAL_READ_BYTES — SQLによって読み取られたバイト数
  • PHYSICAL_READ_REQUESTS — SQLによって発行された読取りリクエスト数
  • PHYSICAL_WRITE_BYTES — SQLによって書き込まれたバイト数
  • PHYSICAL_WRITE_REQUESTS — SQLによって発行された書込みリクエスト数
  • IO_CELL_OFFLOAD_ELIGIBLE_BYTES — Exadataストレージ・サーバーへの条件のオフロードの対象となるバイト数
  • IO_CELL_OFFLOAD_RETURNED_BYTES — スマート・スキャンによって返されたバイト数
  • IO_INTERCONNECT_BYTES — データベースとストレージ・サーバーの間で交換されたバイト数
  • IO_CELL_UNCOMPRESSED_BYTES — 読み取られた非圧縮バイト数(非圧縮バイトは解凍後のサイズ)
  • OPTIMIZED_PHY_READ_REQUESTS — Exadata Smart Flash Cacheで対応された読取りリクエスト数、またはストレージ索引または列キャッシュのために回避された読取りリクエスト数

次の例は、Exadataのオフロード処理のパフォーマンス・データを表示する問合せを示しています。この出力は、SALES表をスキャンする問合せに焦点を当てています。この出力は、SALES表のすべてのデータ(約5 GB)がオフロード処理の対象であったことを示しています。この場合、オフロード処理により、問合せで5385.75 MBのI/Oが実行されたにもかかわらず、ネットワークを介して417.65 MBのデータのみがデータベース・ホストに送信されました。

SQL> SELECT sql_text,
       io_cell_offload_eligible_bytes/1024/1024 offload_eligible_mb,
       io_cell_uncompressed_bytes/1024/1024 io_uncompressed_mb,
       io_interconnect_bytes/1024/1024 io_interconnect_mb,
       io_cell_offload_returned_bytes/1024/1024 cell_return_bytes_mb,
       (physical_read_bytes + physical_write_bytes)/1024/1024 io_disk_mb 
     FROM v$sql 
     WHERE UPPER(sql_text) LIKE '%FROM SALES%';

SQL_TEXT                      OFFLOAD_ELIGIBLE_MB  IO_UNCOMPRESSED_MB  IO_INTERCONNECT_MB  CELL_RETURN_BYTES_MB  IO_DISK_MB
----------------------------  -------------------  ------------------  ------------------  --------------------  –---------
select count(*) from sales                5283.06             5283.06              520.34                417.65     5385.75

V$SQLの情報は、AWRレポートのSQL統計セクションに表示されます。

V$SEGMENT_STATISTICS

V$SEGMENT_STATISTICSには、セグメントごとの統計が含まれます。セグメント・レベルの統計は、Exadataストレージから最適化読取りを実行中の表または索引などの特定のオブジェクトの検出に使用できます。

optimized physical readセグメント統計は、Exadata Smart Flash Cacheから読み取られたオブジェクトの読取りリクエスト数、またはストレージ索引や列キャッシュを使用して回避された読取りの読取りリクエスト数を記録します。optimized physical writes統計は、Exadata Smart Flash Cacheに最初に送信されたオブジェクトの書込みリクエスト数を記録します。このような書込みリクエストは、後でレイジー方式でディスクに同期し、キャッシュ領域を解放できます。

次の例の問合せは、Exadataストレージからの1000を超える最適化読取りに関連付けられているオブジェクトを表示します。同様の問合せを使用して、ごく少数の最適化読取りに関連付けられているオブジェクトを特定できます。

SQL> SELECT object_name, value
     FROM v$segment_statistics
     WHERE statistic_name='optimized physical reads' 
       AND value>1000 
     ORDER BY value;

V$SEGMENT_STATISTICSの情報は、AWRレポートのセグメント統計セクションに表示されます。