小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Oracleのtkprofでトレースログを劇的に見やすくする

はじめに

Oracleに付属しているtkprofユーティリティを使うと、トレースログを整形し、見やすくすることができます。
この記事では、トレースログの出力からtkprofによる変換までの手順について書いています。

新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)
小田 圭二 大塚 信男 五十嵐 建平 谷 敦雄 宮崎 博之 神田 達成 村方 仁
翔泳社
売り上げランキング: 139,072

トレースログを出力する

Oracle DBでトレースログを出力するには、sysユーザで以下のコマンドを実行します。

conn sys/oracle as sysdba
ALTER SYSTEM SET SQL_TRACE = TRUE;

トレースログの出力先は、以下のコマンドで調べることができます。

show parameter user_dump_dest
トレースログをそのまま開いた場合

SQL_TRACE = TRUEの状態で、SQL*Plusから任意のSQLを実行してみると、xxx.trcというファイルが出力されます。このファイルをテキストエディタで開いてみると、以下のようになります。

なにやらたくさんの情報が出力されていますが、実行したクエリ以外は、よくわかりませんね。

トレースログをtkprofで解析する

続いて、tkprofユーティリティを使って、トレースログファイルを整形してみます。コマンドプロンプトを起動して、以下のようにtkprofコマンドを実行します。

tkprof .trcファイル名 解析結果のファイル名

たとえば、デスクトップのworkフォルダにコピーしたトレースログファイルをテキストファイルに変換する場合は、以下のようにします。

cd C:\Users\Administrator\Desktop\work
tkprof xe_ora_3116.trc xe_ora_3116.txt

解析されたテキストファイルを開くと、記事冒頭のキャプチャのように見やすい形で出力されます。

トレースログから得られる情報

トレースログからは、以下のような情報を確認することができます。

  • SQLのパース、実行、フェッチの回数
  • CPU処理時間や経過時間
  • ディスク読み込みとキャッシュ読み込みのブロック数
  • 処理したレコード数
  • 実行計画