STATSPACK
メモ:STATSPACKの使用でSTASPACK用の表領域が増加していたので、STATSPACKの基本的なことを知るメモ
STATSPACKとは
- 「 スタッツパック」と読みます。
- Oracle8iリリースから使用できるパフォーマンス診断ツールです。
- Oracleの性能情報を確認できるので、障害時やチューニングに役立ちます。
STATSPACKの使用方法
- STATSPACKはインストールが必要です。
- 今回の環境は「Windows版のOracle12.1.0.2」です。
- STATSPACKのインストールで使用するSQLは、$ORACLE_HOME\RDBMS\ADMIN配下にあります。
1. STATSPACK用の表領域を作る
$ sqlplus / as sysdba SQL> CREATE TABLESPACE STATSPACK DATAFILE 'C:\app\statspack' SIZE 100M AUTOEXTEND ON SEGMENT SPACE MANAGEMENT AUTO;
2. STATSPACKのインストール
STATSPACKのインストールSQLを流した後、対話式になります。
SQL> @C:\app\Administrator\product\12.1.0\dbhome_1\RDBMS\ADMIN\spcreate.sql perfstat_password: perfstat default_tablespace: STATSPACK temporary_tablespace: TEMP
3. スナップショットを自動で収集する設定
デフォルトは1時間ごとに収集します。
このままだとSTATSPACK表領域のサイズが増加し続けるので、スナップショットを削除する設定も忘れないようにします。
$ sqlplus perfstat/perfstat SQL> @C:\app\Administrator\product\12.1.0\dbhome_1\RDBMS\ADMIN\spauto.sql
スナップショット自動設定の確認をします。
SQL> select interval,what from dba_jobs; INTERVAL ----------------------------------------------------- WHAT ----------------------------------------------------- trunc(SYSDATE+1/24,'HH') statspack.snap;
4. スナップショットの収集間隔を変更
デフォルト1時間ごとから30分単位に変更します。
$ sqlplus perfstat/perfstat SQL> execute dbms_job.interval(1, 'SYSDATE+(1/48)');
変更内容を確認します。
$ sqlplus / as sysdba SQL> select interval,what from dba_jobs; INTERVAL --------------------------------------------------- WHAT --------------------------------------------------- SYSDATE+(1/48) statspack.snap;
5.スナップショットのレベルを変更する
デフォルトはレベル5です。 レベル5から7に変更します。
$ sqlplus perfstat/perfstat SQL> exec statspack.modify_statspack_parameter (i_snap_level=>7) SQL> select snap_level from stats$statspack_parameter;
6. レポートを出力してみる
収集したスナップショットをレポートに出力します。
$ sqlplus perfstat/perfstat SQL> @C:\app\Administrator\product\12.1.0\dbhome_1\RDBMS\ADMIN\spreport.sql Listing all Completed Snapshots Snap Instance DB Name Snap Id Snap Started Level Comment ------------ ------------ --------- ----------------- ----- ------------------- orautf8 ORAUTF8 1 06 11月 2018 14:0 5 0 2 06 11月 2018 15:0 5 0 Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ begin_snapに値を入力してください: 1 Begin Snapshot Id specified: 1 end_snapに値を入力してください: 2 End Snapshot Id specified: 2 Specify the Report Name ~~~~~~~~~~~~~~~~~~~~~~~ The default report file name is sp_1_2. To use this name, press <return> to continue, otherwise enter an alternative. report_nameに値を入力してください: [Enter] ============================== データがたくさん表示 ============================== End of Report ( sp_1_2.lst ) ←レポートが¥「sp_1_2.lst」が作成された SQL>
作成されたファイルはカレントディレクトリで確認
7. スナップショットの自動収集を停止する方法
自動収集のジョブを削除します。
# ジョブ番号を確認する sqlplus perfstat/perfstat SQL> select job, what from dba_jobs; JOB WHAT 1 ---- ------------------------------ statspack.snap; # 確認したジョブ番号を削除する SQL> execute dbms_job.remove(ジョブ番号); # 削除したジョブが表示されないことを確認する $ sqlplus perfstat/perfstat SQL> select interval,what from dba_jobs;
8. スナップショットの削除方法
スナップショットを持ち続けるとSTATSPACK表領域が増加し続けます。削除方法は何通りかあります。
- 日付を指定して削除する
8日より前のスナップショットを削除します
$ sqlplus perfstat/perfstat SQL> exec statspack.purge(8);
- 全てのスナップショットを削除
$ sqlplus perfstat/perfstat SQL> @C:\app\Administrator\product\12.1.0\dbhome_1\RDBMS\ADMIN\sptrunc.sql
- 自動でスナップショットを削除する設定
DBMS.JOBSに「statspack.purge(1)」プロシージャを登録する
SUBMIT( ジョブ番号, PLSQLプロシージャ名, 次回実行日付, 実行間隔 );
# 即時実行して、1日ごとに1日より前のスナップショットを削除する $ sqlplus perfstat/perfstat SQL> DECLARE JOB_NO binary_integer; BEGIN DBMS_JOB.SUBMIT(JOB_NO,'statspack.purge(1);',INTERVAL=>'sysdate+1'); COMMIT; END; /
もう少し勉強したら追加。きっと明日には。
9. STATSPACKのアンインストール
$ sqlplus / as sysdba SQL> @C:\app\Administrator\product\12.1.0\dbhome_1\RDBMS\ADMIN\spdrop.sql