Oracle 10046事件紹介(二)---tkprof


前に簡単に10046事件紹介の文章を書きました.http://hbxztc.blog.51cto.com/1587495/1898624もちろん、収集10046 traceは最終目的ではなく、読み取りおよび分析10046 traceを通じて、対応するsqlの性能問題を分析することが10046 traceの役割を果たしているところです.しかし、10046事件によって発生したオリジナルのトラックファイルは、裸のトラックファイルと呼ばれています.Oracleが裸のトラックファイルに記録されている内容は一目で見ても、そんなに簡単には分かりません.Oracleは、文書をより直感的で分かりやすく表示するために、tkprof命令を提供しています.このコマンドはOracleが持参しています.
1、tkprofの文法:
tkprof filename1 filename2 [waits=yes|no] [sort=option] [print=n]
    [aggregate=yes|no] [insert=filename3] [sys=yes|no] [table=schema.table]
    [explain=user/password] [record=filename4] [width=n]
一番簡単な使い方はtkprof traceです.filename output_filename
具体的な使い方とパラメータの意味は公式文書を参照してください.http://docs.oracle.com/cd/E11882_01/server.12/e 41573/sqltrace.httm菵PFGRF 94985
tkprofによって生成された出力ファイルには、Oracle内部で起動されたsqlのtrace記録が含まれています.これらのSQLは、ユーザのSQLによってトリガされます.一般的には、いくつかのデータ辞書ベーステーブルを調べます.例えば、Objドル、tabドルなど、通常の場合、これらのSQLの運転で消費されるリソースと時間は非常に少ないです.私たちは関心がいらないです.私たちが運営しているsqlに対応する各種情報に関心を持っています.
2、簡単なsql対応のtraceがtkprofを経た後の例
SQL ID: 484dcpmb3vazu Plan Hash: 2949544139

select *
from
 scott.emp where empno=:x


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          2          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          2          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: SYS
Number of plan statistics captured: 1

Rows (1st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
         1          1          1  TABLE ACCESS BY INDEX ROWID EMP (cr=2 pr=0 pw=0 time=38 us cost=1 size=38 card=1)
         1          1          1   INDEX UNIQUE SCAN PK_EMP (cr=1 pr=0 pw=0 time=19 us cost=0 size=0 card=1)(object id 87109)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  SQL*Net message from client                     2        0.01          0.01
3、各部分を詳しく分析する
1)第一部はSQL ID、Plan Hash、及びsqlテキストである.
SQL ID: 484dcpmb3vazu Plan Hash: 2949544139

select *
from
 scott.emp where empno=:x
2)第二部分は今回のSQL運行時の各指標の統計情報のまとめです.
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          2          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          2          0           1
行名の説明
  • パーse  解析SQL文部分
  • execute SQL文の実行部分は、INSERT/UPDATE/DELETE文に対して、ペアは修正された行であり、SELECT文に対して返した行数
  • を示す.
  • fetch  クエリーの戻り値は、select文のみ有効です.
    列名解釈
  • count  ステートメントの解析、実行、またはFETCH段階での回数
  • cpu    ステートメントの解析、実行、またはFETCHの段階で消費される総CPU時間(秒)がTIMED_STATISTICSが開いていないなら、値は0
  • です.
  • elappsed文が解析、実行、またはFETCHの段階で消費される総時間(秒)がTIMED_STATISTICSが開いていないなら、値は0
  • です.
  • disk   ステートメントの解析、実行、またはFETCHの段階におけるディスク上のデータファイルの総物理読み数
  • query  ステートメントは、解析、実行、またはFETCHの段階において、ブザーが一致してモードを読む回数で、通常はクエリステートメント
  • に対応する.
  • current文は、パーセンテージ、実行、またはFETCHの段階で、ブザーの現在のリードモードの回数に対応して、INSERT/UPDATE/DELETE文
  • に対応しています.
  • ローソン   文の合計で生成された行数は、SQL中性子クエリによって生成された行数
  • を含まない.
    3)第三部分Library Cache information
    ステートメントの解析と実行段階でのlibrary cache missの回数がリストされていますが、文にlibrary cache missがないとtkprofは表示されません.最適化器モードなどの情報も一覧表示されています.
    Misses in library cache during parse: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: SYS
    Number of plan statistics captured: 1
    4)第四部分はRow source planである.
    Rows (1st) Rows (avg) Rows (max)  Row Source Operation
    ---------- ---------- ----------  ---------------------------------------------------
             1          1          1  TABLE ACCESS BY INDEX ROWID EMP (cr=2 pr=0 pw=0 time=38 us cost=1 size=38 card=1)
             1          1          1   INDEX UNIQUE SCAN PK_EMP (cr=1 pr=0 pw=0 time=19 us cost=0 size=0 card=1)(object id 87109)
  • cr  一致読取り回数
  • pr  物理読取り回数
  • pw  物理書き込み回数
  • タイム消費時間(マイクロ秒)
  • cotこの操作の消費量は
  • です.
  • sizeによって予測された戻りサイズ(bytes)
  • card事前評価のcardinality
  • 第五部分:文の実行待ちイベント情報
    各待ちイベントの待ち時間と待ち時間が含まれています.
    Elapsed times include waiting on following events:
      Event waited on                             Times   Max. Wait  Total Waited
      ----------------------------------------   Waited  ----------  ------------
      SQL*Net message to client                       2        0.00          0.00
      SQL*Net message from client                     2        0.01          0.01
    公式文書:http://docs.oracle.com/cd/E11882_01/server.12/e 41573/sqltrace.httm菵PFGRF 01010110
    参考文献:https://blogs.oracle.com/askmaclean/entry/maclean%E6%95%99%E4%BD%A0%E8%AF%BBoracle_10046_sqlトレイ
    MOS文書:TKProf Interpretation(9 i and above)(文書ID 76078.1)
    Interpreting Raw SQL_TRACE output(文書ID 39817.1)