http://tech.e2sn.com/oracle-scripts-and-tools/session-snapper の翻訳です。本文書に関する指摘については、原文著者のTanel Poderさんではなく、渡部まで御連絡お願いいたします。
日本語訳:渡部 亮太 (WR at Csus4 dot net)
履歴
- 2012-11-17: 初稿up
- 2012-11-19: 公開先URL変更、誤記修正、ページ表示変更
Session Snapper
- http://files.e2sn.com/scripts/snapper.sql
(コピー&ペーストするのではなく、ファイルを右クリックして、[名前を付けて保存]を使用してください…いくつかのエディタや端末エミュレータは、大きなコンテンツをペーストするときにコードを台無しにするためです。- ORA-06550のエラーに出くわす羽目になるかもしれません!)
はじめに
- Snapperは、データベース内にオブジェクトを一切作成しません
- Snapperは、単なる無名PL/SQLブロックであり、実行時に解析およびコンパイルされます
- Snapperは、データベーススキーマや設定に対する変更が不要です。
Snapperを使用する
SQL> @snapper ash 5 1 144- パラメータ1(ash)では実行される測定の種類 を指定します:
- Snapper v3では、ASHスタイルのサンプリング"ASH"を使用できます。
- Snappoerの全バージョンで、V$SESSTATおよび他のパフォーマンスカウンタのスナップショットをとる "STATS"を使用できます
- パラメータ2(5) スナップショット期間の長さを指定します
- この例では、Sanpperが5秒間セッション アクティビティを測定し、レポートを出力することを意味しています。
- パラメータ3(1)は、 パフォーマンススナップショットの取得とレポートの実行を何度実行するかを指定しています。
- 最初のラウンドのトラブルシューティングには、私は通常、1つのスナップショット/レポートを使います。長期間にわたる複数のスナップショットやレポートを取得するために、大きめの数値を使う場合もあります。
- パラメータ4(144)興味のあるセッションのSIDのSIDです
- 例のようにただ1つのSIDを指定できます- 144
- カンマで区切られた複数のSIDを指定できます - 144,145,200
- インスタンス内のすべてのセッションを意味する"all"を指定できます- all
- 指定された文字列とV$SESSION内の対応する列にマッチするセッションに絞り込むため、user=SYSTEMまたは、program=sqlplus またはmodule= HR のような特殊なオプションを使用できます(許される完全な構文についてはSnapperスクリプトを直接見てください)。
- 最後に、SIDのセットを指定するために"select sid from v$session where username='SYSTEM' and program not like 'sqlplus%'"のような任意のサブクエリを使用できます。
Snapper ASHモード
SQL> @snapper ash 5 1 144Sampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )-----------------------------------------------------------------------Active% | SQL_ID | EVENT | WAIT_CLASS----------------------------------------------------------------------- 100% | 5htvg1rhy5dfv | enq: TM - contention | Application-- End of ASH snap 1, end=2010-03-22 19:54:09, seconds=5, samples_taken=42PL/SQL procedure successfully completed.- Active % は、実際に測定されたメトリックです- セッションのアクティビティ。Snapperの実行中、出力行にリストされた操作/動作が、応答時間に対してどの程度の時間を費やしたかを示すカラムです。
- したがって、100%とは、このセッション(144)が、その応答時間の100%をSQL_ID 5htvg1rhy5dfvのSQL実行に費やしていたことを意味しています。
- そのSQLを実行している間、全ての期間(Sanppeでのサンプリングの5秒間)において、enq: TM - contention待機イベントにて待機する状況が発生していました。
SQL> @snapper ash=sql_id+event+wait_class+blocking_session+p2+p3 5 1 144Sampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )-----------------------------------------------------------------------------------------------------------------------Active% | SQL_ID | EVENT | WAIT_CLASS | BLOCKING_SESSION | P2 | P3----------------------------------------------------------------------------------------------------------------------- 100% | 5htvg1rhy5dfv | enq: TM - contention | Application | 162 | 78452 | 0-- End of ASH snap 1, end=2010-03-22 19:55:31, seconds=5, samples_taken=46PL/SQL procedure successfully completed.SQL> @snapper ash 5 1 156Sampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )-----------------------------------------------------------------------Active% | SQL_ID | EVENT | WAIT_CLASS----------------------------------------------------------------------- 36% | 3jbwa65aqmkvm | read by other session | User I/O 33% | 3jbwa65aqmkvm | direct path read | User I/O 28% | 3jbwa65aqmkvm | ON CPU | ON CPU 3% | 3jbwa65aqmkvm | db file sequential read | User I/O-- End of ASH snap 1, end=2010-03-22 19:50:11, seconds=5, samples_taken=36
SQL> @snapper ash 5 1 156Sampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )-----------------------------------------------------------------------Active% | SQL_ID | EVENT | WAIT_CLASS----------------------------------------------------------------------- 30% | gvgdv2v90wfa7 | db file sequential read | User I/O 7% | 0bzhqhhj9mpaa | db file sequential read | User I/O 5% | 75621g9y3xmvd | db file sequential read | User I/O 5% | 05s4vdwsf5802 | db file sequential read | User I/O 5% | 5raw2bzx227wp | db file sequential read | User I/O 2% | 0yas01u2p9ch4 | db file sequential read | User I/O-- End of ASH snap 1, end=2010-03-22 19:50:29, seconds=5, samples_taken=43- ユーザーが考える時間。ユーザがコーヒーを飲みに行ったか、アプリケーションの実行に十分でないぐらいPCが遅い:-)
- アプリケーションが考える時間。アプリケーションサーバが過負荷になっているときや、アプリケーションサーバのコードに問題があるときに、しばしば発生します。アプリケーションがビジーまたはstuckているため、速くデータベースにリクエストを送信したり、受け取ったデータを処理することができない。
- 最後に、ネットワークのレイテンシとスループット。意図的にこの項目を最後に残しました。なぜなら、ネットワークに問題があるに違いないと即座に決めてかかるのではなく、(ネットワークより上位のレベルに位置づけられる)ユーザーとアプリケーションの実際の動作状況を確認することのほうが有意義であるためです。
3.2 (インスタンス全体の)すべてのセッションに対してASHモードでSnapperを実行する
SQL> @snapper ash 5 1 allSampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )-----------------------------------------------------------------------Active% | SQL_ID | EVENT | WAIT_CLASS----------------------------------------------------------------------- 69% | 3h1z39qtgwc5h | db file scattered read | User I/O 29% | fy8n9175jyj7s | db file scattered read | User I/O 9% | | log file parallel write | System I/O 2% | fy8n9175jyj7s | ON CPU | ON CPU 2% | | control file parallel wri | System I/O-- End of ASH snap 1, end=2010-03-22 17:33:17, seconds=5, samples_taken=45PL/SQL procedure successfully completed.SQL> @snapper ash=sid+event+wait_class 5 1 allSampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )--------------------------------------------------------------Active% | SID | EVENT | WAIT_CLASS-------------------------------------------------------------- 95% | 133 | db file scattered read | User I/O 8% | 165 | control file parallel wri | System I/O 5% | 133 | db file sequential read | User I/O-- End of ASH snap 1, end=2010-03-22 17:33:53, seconds=5, samples_taken=40PL/SQL procedure successfully completed.SQL> @snapper ash=sid+event+wait_class,ash1=plsql_object_id+plsql_subprogram_id+sql_id 5 1 allSampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )--------------------------------------------------------------Active% | SID | EVENT | WAIT_CLASS-------------------------------------------------------------- 70% | 133 | db file scattered read | User I/O 25% | 133 | db file sequential read | User I/O 9% | 165 | control file parallel wri | System I/O 7% | 166 | log file parallel write | System I/O 5% | 133 | ON CPU | ON CPU---------------------------------------------------Active% | PLSQL_OBJE | PLSQL_SUBP | SQL_ID--------------------------------------------------- 43% | | | dv59rkngpa8m1 30% | | | b8qywu6ug00u3 23% | | | fgkm2nvqhyyqh 16% | | | 2% | 5357 | 135 | 82hxvr8kxuzjq 2% | 4345 | 105 | 1gu8t96d0bdmu-- End of ASH snap 1, end=2010-03-22 17:34:51, seconds=5, samples_taken=44SQL> @snapper ash=sid+event+wait_class,ash1=plsql_object_id+plsql_subprogram_id+sql_id,ash2=program+module+action 5 1 allSampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )--------------------------------------------------------------Active% | SID | EVENT | WAIT_CLASS-------------------------------------------------------------- 100% | 133 | db file scattered read | User I/O 5% | 165 | control file parallel wri | System I/O 2% | 162 | ON CPU | ON CPU 2% | 167 | db file parallel write | System I/O 2% | 166 | log file parallel write | System I/O---------------------------------------------------Active% | PLSQL_OBJE | PLSQL_SUBP | SQL_ID--------------------------------------------------- 77% | | | a5xyjp9gt796s 23% | | | 4g4u44bk830ms 12% | | |-------------------------------------------------------------------------------------------Active% | PROGRAM | MODULE | ACTION------------------------------------------------------------------------------------------- 100% | sqlplus@mac01 (TNS V1-V3) | sqlplus@mac01 (TNS V1-V3) | 5% | oracle@solaris02 (CKPT) | | 2% | oracle@solaris02 (DBW0) | | 2% | oracle@solaris02 (CJQ0) | | 2% | oracle@solaris02 (LGWR) | |-- End of ASH snap 1, end=2010-03-22 17:35:06, seconds=5, samples_taken=434 Snapper V$パフォーマンスカウンタ / 統計モード
Snapperはバージョン1以来、統計モードを持っています。私がSnapperを書いた当初の理由は、SQLトレースのような従来型のツールや、AWR / Statspackのようなインスタンス·レベルのパフォーマンス·ツールでは有効でない状況に対応するためです。v3から、Snapperは、V$SESSTAT統計情報を自動的に表示しません。 インスタンス全体のトラブルシューティングツールとして使用されることを意図しているためです。 (そして、インスタンス内に非常に多くのセッションが存在する場合は、すべてのセッションについてV$SESSTATを問い合せることは負荷が高いかもしれないため)
- セッション·レベルの統計情報:
- s - V$SESSTATからのセッション統計
- t - V$SESS_TIME_MODELからのセッション時間モデル情報
- w - V$SESSION_EVENTおよびV$SESSION_WAITからのセッション待機統計
- インスタンス·レベルの統計情報:
- L - V$LATCHからのインスタンスラッチ取得統計(gets+ immediate_gets)
- e - V$ENQUEUE_STATからのインスタンス·エンキュー·ロック取得統計
- b - x$kcbswからのバッファ取得統計 -10.2までのバージョンで有用
- a - 上記のすべて
SQL> @snapper ash=event+wait_class,stats,gather=ts,tinclude=CPU,sinclude=parse 5 1 allSampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )---------------------------------------------------------------------------------------------------------------------- SID, USERNAME , TYPE, STATISTIC , DELTA, HDELTA/SEC, %TIME, GRAPH---------------------------------------------------------------------------------------------------------------------- 119, SYS , STAT, parse count (total) , 12, 2.4, 133, SYS , STAT, parse time cpu , 404, 80.8, 133, SYS , STAT, parse time elapsed , 418, 83.6, 133, SYS , STAT, parse count (total) , 11241, 2.25k, 133, SYS , STAT, parse count (hard) , 11241, 2.25k, 159, (J000) , TIME, DB CPU , 859, 171.8us, .0%, | | 161, (MMON) , STAT, parse count (total) , 5, 1, 161, (MMON) , STAT, parse count (hard) , 3, .6, 161, (MMON) , TIME, background cpu time , 8629, 1.73ms, .2%, | | 162, (CJQ0) , STAT, parse count (total) , 1, .2, 162, (CJQ0) , TIME, background cpu time , 3242, 648.4us, .1%, | | 167, (DBW0) , TIME, background cpu time , 142, 28.4us, .0%, | | 170, (PMON) , TIME, background cpu time , 1267, 253.4us, .0%, | |-- End of Stats snap 1, end=2010-03-22 18:02:28, seconds=5-----------------------------------------------------Active% | EVENT | WAIT_CLASS----------------------------------------------------- 105% | ON CPU | ON CPU 17% | db file sequential read | User I/O 2% | log file parallel write | System I/O-- End of ASH snap 1, end=2010-03-22 18:02:28, seconds=5, samples_taken=41PL/SQL procedure successfully completed.インスタンスのセッションのサブセットにSnapperを実行する
SQL> @snapper ash=sid+event+wait_class,ash1=sid+sqlid+module,stats,gather=ts,tinclude=CPU,sinclude=parse 5 1 user=SOESampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )---------------------------------------------------------------------------------------------------------------------- SID, USERNAME , TYPE, STATISTIC , DELTA, HDELTA/SEC, %TIME, GRAPH---------------------------------------------------------------------------------------------------------------------- 9, SOE , TIME, DB CPU , 30000, 6ms, .6%, |@ | 17, SOE , TIME, DB CPU , 70000, 14ms, 1.4%, |@ | 21, SOE , TIME, DB CPU , 30000, 6ms, .6%, |@ | 144, SOE , STAT, parse count (total) , 2, .4, 144, SOE , TIME, DB CPU , 370000, 74ms, 7.4%, |@ | 156, SOE , TIME, DB CPU , 50000, 10ms, 1.0%, |@ |-- End of Stats snap 1, end=2010-03-22 18:34:09, seconds=5--------------------------------------------------------------Active% | SID | EVENT | WAIT_CLASS-------------------------------------------------------------- 100% | 21 | read by other session | User I/O 93% | 144 | read by other session | User I/O 83% | 156 | read by other session | User I/O 73% | 9 | read by other session | User I/O 54% | 17 | db file scattered read | User I/O 27% | 9 | db file scattered read | User I/O 27% | 17 | read by other session | User I/O 17% | 156 | db file scattered read | User I/O 17% | 17 | direct path read | User I/O 7% | 144 | ON CPU | ON CPU--------------------------------------------------------------Active% | SID | SQL_ID | MODULE-------------------------------------------------------------- 100% | 21 | 3jbwa65aqmkvm | Process Orders 100% | 9 | 3jbwa65aqmkvm | Process Orders 100% | 144 | 3jbwa65aqmkvm | Process Orders 100% | 156 | 3jbwa65aqmkvm | Process Orders 100% | 17 | 3jbwa65aqmkvm | Process Orders-- End of ASH snap 1, end=2010-03-22 18:34:09, seconds=5, samples_taken=41- username(userと同じ)
- SID
- SPID(pidとospidと同じ)
- program
- machine
- osuser
- module
- action
- client_id
SQL> @snapper ash=sid+event+wait_class,ash1=sid+sqlid+module,stats,gather=ts,tinclude=CPU,sinclude=parse 5 1 "select sid from v$session where username = 'SOE' and program like 'JDBC%'"Sampling...-- Session Snapper v3.10 by Tanel Poder @ E2SN ( http://tech.e2sn.com )---------------------------------------------------------------------------------------------------------------------- SID, USERNAME , TYPE, STATISTIC , DELTA, HDELTA/SEC, %TIME, GRAPH---------------------------------------------------------------------------------------------------------------------- 9, SOE , TIME, DB CPU , 50000, 10ms, 1.0%, |@ | 17, SOE , TIME, DB CPU , 60000, 12ms, 1.2%, |@ | 21, SOE , TIME, DB CPU , 70000, 14ms, 1.4%, |@ | 144, SOE , TIME, DB CPU , 60000, 12ms, 1.2%, |@ | 156, SOE , TIME, DB CPU , 50000, 10ms, 1.0%, |@ |-- End of Stats snap 1, end=2010-03-22 18:34:32, seconds=5--------------------------------------------------------------Active% | SID | EVENT | WAIT_CLASS-------------------------------------------------------------- 97% | 9 | read by other session | User I/O 74% | 144 | direct path read | User I/O 72% | 156 | db file scattered read | User I/O 72% | 21 | direct path read | User I/O 72% | 17 | direct path read | User I/O 28% | 156 | read by other session | User I/O 26% | 17 | db file scattered read | User I/O 26% | 21 | read by other session | User I/O 26% | 144 | read by other session | User I/O 3% | 9 | db file scattered read | User I/O--------------------------------------------------------------Active% | SID | SQL_ID | MODULE-------------------------------------------------------------- 100% | 21 | 3jbwa65aqmkvm | Process Orders 100% | 9 | 3jbwa65aqmkvm | Process Orders 100% | 144 | 3jbwa65aqmkvm | Process Orders 100% | 156 | 3jbwa65aqmkvm | Process Orders 100% | 17 | 3jbwa65aqmkvm | Process Orders-- End of ASH snap 1, end=2010-03-22 18:34:32, seconds=5, samples_taken=39PL/SQL procedure successfully completed.SQL> Snapperをダウンロードする
- Snapper V3.5 - http://files.e2sn.com/scripts/snapper.sql
- Snapper V2 - http://files.e2sn.com/scripts/snapper_v2.sql
参考文献
私はブログで、過去にSnapper v1およびv2に関するいくつかの記事を書いているので、これらを読みたくなるかもしれない(Snapper v3で、構文上の変更点がいくつかあることに注意!)私のブログでのすべてのSnapper関連の記事を見ることができます:
フィードバック
訳注:本文書に関する指摘については、原文著者のTanel Poderさんではなく、渡部 (WR at Csus4 dot net)まで御連絡お願いいたします。
