STATSPACK 設定手順
利用するのは簡単、活用するのは難しい。・・・分析スキルが鍵ですなー。
オラクル標準の性能分析ツールSTATSPACKについて調べてみた。
インストール方法
STATSPACKのインストールは以下手順にて実施する。複数インスタンスが存在する場合には、環境変数ORACLE_SIDを設定してから実行すること。
(1) SQL*PLUSにて、SYS 又は INTERNAL USERとしてDBに接続する。
(2) 以下のスクリプトを実行して下さい。
SQL> @$ORACLE_HOME/rdbms/admin/spcreate.sql
(3) STATS PACKの使用する表と索引を格納する表領域を指定する。→(自動作成)
(4) STATS PACKの使用する一時表領域を指定する。→(自動作成)
インストール後、エラーが発生していないかどうか以下のログを確認。
・spcpkg.lis
・spctab.lis
・spcusr.lis
統計情報の採取方法
STATSPACKを利用して統計情報を取得することができる。 (1)STATS PACK用のユーザー(デフォルトならperfstat)でDBに接続する。% sqlplus perfstat/perfstat
(2)「スナップショット」を採取する。
SQL> execute statspack.snap
統計情報の出力方法
STATSPACKを利用して取得した統計情報を元に、レポートを作成することができる。 (1)STATS PACK用のユーザーでDBに接続する。% sqlplus perfstat/perfstat
(2)以下のスクリプトを実行する。
SQL> @$ORACLE_HOME/rdbms/admin/spreport.sql
(3) 開始スナップショットIDを入力する。
Enter beginning Snap Id: 1
(4) 終了スナップショットIDを入力する。
Enter ending Snap Id: 2
(5) レポートのファイル名を指定する。 デフォルトは st_{beginning Snap Id}_{ending Snap Id}.log となる。
(6) カレントディレクトリに指定したファイル名でレポートが出力される。
レポート結果の分析方法参考:KROWN#30147, 31454, 31453
どのように使えばいいのか?
基本的な手順は以下のとおり。1.「統計情報の採取方法」の手順にて、統計情報を蓄積しておく。
2.問題が発生した場合に、「統計情報の出力方法」の手順にて現時点のレポートを出力する。
3.同様手順にて過去時点のレポートを出力し比較することで、DB全体の変化および問題点を分析する。
利用パターンは以下の2つくらい。
<定期実行>
STATSPACKに限らず稼動状況の情報を蓄積し、問題が起きた時に比較参照できるようにしておくことは重要。
とくに本番稼動環境では定期実行(たとえば一日に数回でも)することを検討すべき。
(もっと便利なGUIツールとか導入してるなら不要だけどー)
定期実行が必要なのは「採取」のみ。分析を毎日やる必要は全くなし!
※たとえ、運用担当者がレポートの見方わからなかったとしても、とっておいた方がいいと思う。
(大問題に発展した時、スペシャリストな方に提供できる可能性もあるし。)
※ただしSTATSPACK利用時には多少のパフォーマンス劣化があるので、事前に検査/了承を。
<原因調査>
パフォーマンス劣化の原因となる処理が判明している場合には、その処理の前後でスナップショットを取得する。
そのスナップショットデータを対象に統計情報の出力を行うことで、オラクル内部でどのような処理が行われたかを把握することができる。
パフォーマンス上の問題があった場合にはSQLチューニングやパラメータ変更を行い、同様手順にて統計情報の出力を行う。
その結果を比較分析することでチューニング効果を検証する。
アンインストール方法
(1) SQL*PLUSにて、SYS 又は INTERNAL USERとしてDBに接続する。(2) 以下のスクリプトを実行する。
SQL> @$ORACLE_HOME/rdbms/admin/spdrop.sql
アンインストール後、エラーが発生していないかどうか以下のログを確認。
・spdusr.lis
・spdtab.lis
使用方法詳細
以下ファイルに少しは載ってるみたい。ただしもちろん英語。$ORACLE_HOME/rdbms/admin/spdoc.txt
参考書籍
日本語で出版されている STATSPACK 関連本はコレくらいかな?翻訳=日本オラクル!