STATSPACKユーティリティを使ってみる

(1)スナップショットの取得
perfstatユーザでstatspack.snapプロシージャを実行

SQL> connect perfstat/perfstat
接続されました。
SQL> execute statspack.snap

PL/SQLプロシージャが正常に完了しました。

上記のプロシージャを実行してスナップショットを取得すると、V$表から情報を収集しSTATSPACKのSTATS$表にデータを格納する。
※明確なパフォーマンス分析のためには、収集されるデータに時間情報が含まれるようにTIMED_STATISTICSパラメータをTRUEに設定する(R9.0)。
R9.2.0からはSTATISTICS_LEVELをTYPICAL以上に設定すると、自動的にTIMED_STATISTICSの値がTRUEになる。

(2)スナップショット取得の自動化
spauto.sqlスクリプトを実行して、ジョブ・キューを登録する。
Oracleのジョブキューを利用するには、JOB_QUEUE_PROCESSES初期化パラメータを1以上に設定する必要がある。

SQL> @?/rdbms/admin/spauto.sql
SQL> select job,priv_user,next_date,interval from dba_jobs ;

 JOB PRIV_USE NEXT_DATE           INTERVAL
---- -------- ------------------- ------------------------
   1 PERFSTAT 2006-07-07 17:00:00 trunc(SYSDATE+1/24,'HH')

※ジョブの管理には、DBMS_JOBパッケージを利用する。DBMS_JOBパッケージにはジョブの登録・変更・削除などを行うためのプロシージャが用意されており、ユーザーが必要に応じて実行する。
(例)ジョブの削除

SQL> EXECUTE DBMS_JOB.REMOVE(1) ;

(3)レポート作成
perfstatユーザでspreport.sqlを実行

SQL> @?/rdbms/admin/spreport.sql
 :
begin_snapに値を入力してください: 1
 :
end_snapに値を入力してください: 2
 :
report_nameに値を入力してください:1_2

実行ディレクトリにsp.lstというファイル名でレポートが作成される。

(4)STATSPACK用データのメンテナンス

  • 不要データの削除:sppurge.sql(削除するsnap_idの範囲を指定できる)
  • 全データの切捨て:sptrunc.sql