作業の待ち時間が長いので、DB Magazine 9月号を見ながら、STATSPACKをインストールしてみた。サーバがWindowsの場合はSQL*Plusで以下のとおり。
connect / as SYSDBA;
@%ORACLE_HOME%\rdbms\admin\spcreate.sql
そうするとPERFSTATユーザが作成されるので、STATSPACKを使う場合はこのユーザでログイン。
connect perfstat/perfstat;
レポートの元情報を収集するためにスナップショットを取る。
execute statspack.snap;
これを計測したい間隔を空けて2度行う(1時間おきとか)
そしてレポート出力。
@%ORACLE_HOME%\rdbms\admin\spreport.sql;
どのスナップショットの間のレポートを出力するか聞かれるので番号を入力するとかなり長いレポートが出力される。
レポート見てみると、重いSQLなんかが一目で分かる。CPUを食っているのか、Disk I/Oに時間がかかっているのか、SORTに時間がかかっているのか、単純に実行回数が多いからか等々。
これはもう少し早く知っておくべきだった。ちょっと前にSQLのパフォーマンスチューニングをやったときは、PLAN_TABLEの実行計画ぐらいしか知らなくて地道にSQLの実行計画を見てはインデックスを修正したりということをやってたけど、これならどのSQLが重いかがピンポイントで分かるからそれを重点的にチューニングすれば良さそう…。
コメント
typoしてますよ~
”spcreste.sql”じゃなくて”spcreate.sql”じゃないですか?
ああ、たしかにtypoですね。
こんな昔の記事に指摘をいただいて感謝です。