tech_memo / Oracle / ASH


tech_memo/ORACLE

便利SQL

指定期間内の各SQLの待機イベントの回数・時間の統計を取得

select
INST_ID, SQL_ID, SQL_PLAN_HASH_VALUE, EVENT, SESSION_STATE, count(1) "SESSION_COUNT", sum(time_waited) as total_wait_micro_sec
from
GV$ACTIVE_SESSION_HISTORY
where
SAMPLE_TIME between to_date('20170525 100000','yyyymmdd hh24miss')
and to_date('20170525 100100','yyyymmdd hh24miss')
group by
INST_ID, SQL_ID, SQL_PLAN_HASH_VALUE, EVENT, SESSION_STATE
order by 7,1,2,3,6;

時系列順(秒オーダー)に発生したSQLとその待機イベントと時間

select
session_id, session_serial#, sample_time, sql_id, SQL_PLAN_HASH_VALUE, EVENT, SESSION_STATE, time_waited/1000 as wait_msec
from
GV$ACTIVE_SESSION_HISTORY
where
SAMPLE_TIME between to_date('20170525 100000','yyyymmdd hh24miss')
and to_date('20170525 100100','yyyymmdd hh24miss')
order by 3, 1, 2;

情報格納オブジェクト

オブジェクト名説明保存期間
V$ACTIVE_SESSION_HISTORYASHバッファ(共有プール)を参照。1秒単位に情報を格納ASHバッファがいっぱいになるまで。またはインスタンス停止
DBA_HIST_ACTIVE_SESS_HISTORYWRH$_ACTIVE_SESSION_HISTORY(AWR。SYSAUX領域)の情報を参照。10秒単位に情報を格納AWRの保存期間と同じ。デフォルト8日

ASHレポート生成スクリプト

  • 時間帯指定
    @?/rdbms/admin/ashrpt.sql
  • SQL_IDなどのフィルタができる版
    @?/rdbms/admin/ashrpti.sql
    • 「アクティビティの経過(Activity Over Time)」セクションで使用する時間帯(秒数)を指定できるが、これがよくわからない。。とりあえず、下記マニュアル

Oracle PDF

Manual

最新の20件

2023-01-26 2022-11-11 2022-03-02 2022-02-03 2021-11-18 2021-11-11 2021-10-27 2021-10-04 2021-09-30 2021-08-24 2021-04-01 2021-02-25 2020-08-13 2020-05-22 2020-04-16 2020-04-15 2020-03-23 2020-03-12 2020-02-27

今日の1件

  • tech_memo/Oracle/ASH(1)

  • counter: 615
  • today: 1
  • yesterday: 1
  • online: 1