テーブル †
テーブル名 | 用途 |
V$ACTIVE_SESSION_HISTORY | ACTIVE SESSION HISTORY(10gからの機能)はOracleのセッション情報を1秒おきに自動的にログとして記録で、このテーブルで内容を確認可能 SGAに残ってない場合は、DBA_HIST_ACTIVE_SESS_HISTORY表を検索する) V$〜は1秒毎の情報だが、DBA〜は_ash_disk_filter_ratioパラメータ(デフォルト10)の粒度の割り当て余力を確認でサンプル取得する (つまり10分の1のデータしか残らない/10秒毎の集計になる) |
DBA_HIST_ACTIVE_SESS_HISTORY |
spool <ファイル名>.log
set term off trims on colsep "," linesize 10000 pages 50000 numwidth 20
alter session set nls_date_format='yyyy/mm/dd hh24:mi:ss';
select * from dba_hist_active_sess_history
where sample_time
between to_timestamp('15-07-25 12:00','YY-MM-DD HH24:MI')
and to_timestamp('15-07-25 13:00','YY-MM-DD HH24:MI');
quit
- 基本的な見方
- EVENT列で問題となってそうな待機イベントを確認する
- BLOCKING_SESSION列 の SESSION_IDを確認する(そのセッションをブロックしてるSID)
- 上記の SESSION_IDを確認し、どのようなSQLか確認する
SQLの実行時間確認 †
-- GV$ACTIVE_SESSION_HISTORY
select
inst_id
,sql_exec_id
,sql_id
,to_char(sql_exec_start,'MM-DD HH24:MI:SS')
,max(sample_time)
from GV$ACTIVE_SESSION_HISTORY
where sample_time
between to_timestamp('16-03-05 12:00','YY-MM-DD HH24:MI')
and to_timestamp('16-03-05 13:00','YY-MM-DD HH24:MI')
and sql_id is not null
group by inst_id,sql_exec_id,sql_id,sql_exec_start
order by sql_exec_start;
-- DBA_HIST_ACTIVE_SESS_HISTORY
select
instance_number
,sql_exec_id
,sql_id
,to_char(sql_exec_start,'MM-DD HH24:MI:SS')
,max(sample_time)
from DBA_HIST_ACTIVE_SESS_HISTORY
where sample_time
between to_timestamp('16-03-05 12:00','YY-MM-DD HH24:MI')
and to_timestamp('16-03-05 13:00','YY-MM-DD HH24:MI')
and sql_id is not null
group by instance_number,sql_exec_id,sql_id,sql_exec_start
order by sql_exec_start;
ダンプ †
指定した 分前のASHをダンプで出力させる。カンマ区切りで、SQL*Loaderで取り込む為のコントロールファイルの構文も出力される。
oradebug setmypid
oradebug dump ashdump 分
-- 出力先のファイルを確認
select value from v$diag_info where name='Default Trace File';
レポート †
SQL名 | 説明 |
ashrpt.sql | 期間(分単位)のみ指定してレポート作成 |
ashrpti.sql | 詳細な条件を指定(SQL_IDやセッションID)してフィルタさせたASHレポート slot_widthではActive Over Timeセクションで利用する時間帯の数を指定(デフォルト10) |
ASHレポートに含まれる項目(ASHレポートサンプル)
分類 | セクション | 説明 |
待機 | Top User Events | フォアグランド(サーバープロセス)により上位の待機イベント |
Top Background Events | バックグラウンドプロセスによる上位の待機イベント |
Top Event P1/P2/P3 Values | 待機イベントの追加情報(パラメータ1〜3) |
負荷特性 | Top Service/Module | 負荷割合の高いサービス名とモジュール名 |
Top Client IDs | 負荷割合の高いクライアント識別子 |
Top SQL Command Types | 負荷割合の高いSQLコマンドタイプ(SELECT/UPDATE/INSERT/DELETEなど) |
Top Phases of Execution | 負荷割合の高い実行フェーズ(SQL、PL/SQL、Javaコンパイル実行など) |
SQL | Top SQL with Top Events | 負荷割合の高いSQL文の待機イベント |
Top SQL with Top Row Sources | 負荷割合の高いSQL文の実行計画 |
Top SQL using literals | 負荷割合の高いリテラルを使用したSQL文 |
Top Parsing Module/Action | 負荷割合の高い解析を行うSQL文を実行しているモジュール名とアクション名 |
Complete List of SQL Text | Top SQLでリストラされたSQL文の完全なSQLテキスト |
PL/SQL | Top PL/SQL Procedures | 負荷割合の高いPL/SQLプロシージャ |
JAVA | Top Java Workload | 負荷割合の高いJavaプログラム |
セクション | Top Sessions | 負荷割合の高い待機イベントで待機していたセッション情報 |
Top Blocking Sessions | 負荷割合の高いブロッキングセッション |
Top Sessions running PQs | 負荷割合の高い待機イベントで待機していたパラレル問い合わせ実行中セッション情報 |
オブジェクト ファイル ラッチ | Top DB Objects | 負荷割合の高いDBオブジェクト(表や索引など) |
Top DB Files | 負荷割合の高いDBファイル |
Top Latches | 負荷割合の高いラッチ |
アクティビティ | Activity Over Time | slot_widthで指定で分割した期間内における上位3つの待機イベント情報 Slot_Count列の値が大きい箇所が一番負荷の高かった時間として確認できる |