このブログを検索

2011年2月7日月曜日

パフォーマンスツールSTATSPACKの利用

STATSPACKは、定期的に取得したスナップショットからDBのパフォーマンス値を取得するツールです。
スナップショットの差分により、v$sysstatなどのように累積値で記録している値の動きをとらえることができます。

1.STATSPACK用表領域の作成
CREATE TABLESPACE PERFSTAT_DATA
  DATAFILE '/DATA/DATABASE/PERFSTAT_DATA.DBF' SIZE 1024M REUSE AUTOEXTEND ON
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
  SEGMENT SPACE MANAGEMENT AUTO;

2.STATSPACKのインストール
インストール用のコマンドで作成します。
$ sqlplus sys as sysdba
SQL> @$ORACLE_HOME/rdbms/admin/spcreate.sql
default_tablespaceに値を入力してください: PERFSTAT_DATA ★作成した表領域名
Using tablespace PERFSTAT_DATA as PERFSTAT default tablespace.

Choose the PERFSTAT user's Temporary tablespace.

TABLESPACE_NAME
--------------------------------------------------------------------------------
CONTENTS                    DB DEFAULT TEMP TABLESPACE
--------------------------- --------------------------
TEMP
TEMPORARY                   *

temporary_tablespaceに値を入力してください: TEMP

3.スナップショットの作成
スナップショット間隔が短いほど精度は上がります。
ただし、スナップショットの作成には負荷がかかるので1時間ごとが目安です。

$ sqlplus perfstat@SSS01DB
SQL> execute statspack.snap

セグメント(テーブル等)の情報も欲しい時は、スナップショットレベルを7以上にします。
SQL> execute statspack.snap(i_snap_level => 7) 

4.スナップショットの確認
STATSPACKはスナップショットの「差分」で生成するので、スナップショットが2つ以上必要です。
SQL> select snap_id, snap_time from stats$snapshot;

 SNAP_ID   SNAP_TIM
 --------- -----------------
         1 09-10-27 11:50:02
         2 09-10-27 11:50:18

5.STATSPACKレポートの作成
レポート出力用のコマンドを使ってレポートを作成します。
$ sqlplus perfstat@SSS01DB
SQL> @$ORACLE_HOME/rdbms/admin/spreport.sql;
Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
  190003545 SSS01DEV            1 sss01dev
                      :
Instance     DB Name        Snap Id   Snap Started    Level Comment
------------ ------------ --------- ----------------- ----- --------------------
sss01dev     SSS01DEV             1 27 10月 2009 15:2     5
                                    7
                                  2 27 10月 2009 15:3     5
                                    1

Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
begin_snapに値を入力してください: 1 ★開始スナップショットID
Begin Snapshot Id specified: 1

end_snapに値を入力してください: 2 ★終了スナップショットID
End   Snapshot Id specified: 2

Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is sp_1_2.  To use this name,
press  to continue, otherwise enter an alternative.

report_nameに値を入力してください:  ★改行あるいは任意のファイル名

6.スナップショットの削除
スナップショットは削除しないと貯まり続けるので、適度に削除します。
スナップショット単位で削除すると負荷上昇やUNDO消費の原因になるので注意が必要です。

6-1.スナップショット単位で削除
$ sqlplus perfstat@SSS01DB
SQL> @?/rdbms/admin/sppurge
(削除開始スナップID):1
(削除終了スナップID):2

6-2.まるごと削除
$ sqlplus perfstat@SSS01DB
SQL> @?/rdbms/admin/sptrunc

SQL> select count(*) from stats$snapshot;
→ゼロ件であることを確認できます。

0 件のコメント:

コメントを投稿