Oracle/ASH

テーブル

テーブル名用途
V$ACTIVE_SESSION_HISTORYACTIVE 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コンパイル実行など)
SQLTop 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 TextTop SQLでリストラされたSQL文の完全なSQLテキスト
PL/SQLTop PL/SQL Procedures負荷割合の高いPL/SQLプロシージャ
JAVATop Java Workload負荷割合の高いJavaプログラム
セクションTop Sessions負荷割合の高い待機イベントで待機していたセッション情報
Top Blocking Sessions負荷割合の高いブロッキングセッション
Top Sessions running PQs負荷割合の高い待機イベントで待機していたパラレル問い合わせ実行中セッション情報
オブジェクト
ファイル
ラッチ
Top DB Objects負荷割合の高いDBオブジェクト(表や索引など)
Top DB Files負荷割合の高いDBファイル
Top Latches負荷割合の高いラッチ
アクティビティActivity Over Timeslot_widthで指定で分割した期間内における上位3つの待機イベント情報
Slot_Count列の値が大きい箇所が一番負荷の高かった時間として確認できる

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-01-05 (木) 20:55:59 (80d)