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の文法:
具体的な使い方とパラメータの意味は公式文書を参照してください.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を経た後の例
1)第一部はSQL ID、Plan Hash、及びsqlテキストである.パー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は表示されません.最適化器モードなどの情報も一覧表示されています. cr 一致読取り回数 pr 物理読取り回数 pw 物理書き込み回数 タイム消費時間(マイクロ秒) cotこの操作の消費量は です. sizeによって予測された戻りサイズ(bytes) card事前評価のcardinality 第五部分:文の実行待ちイベント情報
各待ちイベントの待ち時間と待ち時間が含まれています.
参考文献: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)
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
行名の説明列名解釈
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)
各待ちイベントの待ち時間と待ち時間が含まれています.
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)