>> i's SQUARE >> Oracleのノウハウ >> パフォーマンス・チューニング

パフォーマンス・チューニング




Oracleのパフォーマンス・チューニングにおいて重要なSQLチューニングの効果をより正確に測るために良く使われるのがSQLトレースです。 以下にSQLトレースの手順を説明します。


1.事前準備
初期パラメータ($ORACLE_HOME/dbs/initxxxx.ora)の内容変更を行う
timed_statistics = false を
timed_statistics = true に変更する


#sql_trace = true を
sql_trace = true に変更する(#を削除する)


2.セッション単位でSQLトレースを採取
SQL*Plusにログインする。
SQL>SET TIMING ON;
SQL>ALTER SESSION SET SQL_TRACE = TRUE;
目的のSQLを実行する
SQL>ALTER SESSION SET SQL_TRACE = FALSE;
SQL>SET TIMING OFF;
SQL>exit


3.トレースファイルをtkprofユーティリティで整形する
$ORACLE_HOME/dbs/config**.oraに書かれてある user_dump_destのパス(出力先ディレクトリ)にトレースファイル(***.trc)が出力されているのを確認する


トレースファイルの出力先ディレクトリに移動し、 SQLトレースを取得した時刻を基に対象となるトレースファイルを特定してtkprofユーティリティを実行する。


tkprofユーティリティの実行
tkprof トレースファイル名 整形ファイル名 オプション


TKPROFユーティリティは、トレースファイルを見やすいように整形する際に、さまざまなオプションを指定できます。
【オプションの例】
sort=prsela(Parse経過時間で降順に出力)
sort=prsela,exeela,fchela(Parse経過時間、Execute経過時間、Fetch経過時間で降順に出力)
print=3(頭3件分出力)
sys=no(リカーシブコールをログは出さない様にする)
explain=オラクルID/オラクルパスワード(explainオプションを追加)
aggregate=no(同一SQL単位の集計は行われず、実行された回数分出力)


【tkprof コマンドの例】
tkprof xxxxxx.trc test1.txt sys=no aggregate=no
tkprof xxxxxx.trc test2.txt sort=prsela,exeela,fchela explain=system/manager@hogehoge sys=no print=3


男は強くなければ生きられない。
優しくなければ生きる資格がない。
by レイモンド・チャンドラー