yuwji.hatenablog.jp

雑多に色々

Amazon RDS for OracleでStatspackを有効にする手順

RDS for Oracleにstatspackを設定する機会があり調べて実施したのでメモとして残しておきます。

参考

AWSの公式ドキュメントにあります。 ほぼほぼこれに従ってますが、一部記載のないSQL等も纏めてます。

Oracle Statspack - Amazon Relational Database Service

前提

下記条件に合致しない場合、前述のドキュメントなりを見て対処しておく。

  • 該当のRDSインスタンスで初めてstatspackを有効化すること。
  • PERFSTATユーザーが該当インスタンスに存在しないこと。
    PERFSTATユーザーは下記SQLで存在確認できます。
SELECT USERNAME FROM DBA_USERS WHERE USERNAME = 'PERFSTAT';

手順

1.AWSコンソールを開き、RDSへ移動。

2.左サイドのメニューで「オプショングループ」を選択。

3.該当のオプショングループをチェックし、オプションの追加を選択。

4.オプションで「STATSPACK」を選択し、すぐに適用で「はい」を選択し、「オプションの追加」を選択。

5.オプショングループの画面に戻る。これでRDSによってRDSによりDBインスタンスにStatspackがインストールされる。

6.SQL*PLUSを使い、マスターユーザーとマスターパスワードでOracleインスタンスに接続する。

7.RDSによりDBインスタンスにStatspackがインストールされたか確認するために、PERFSTATユーザーが追加されたかを確認する。

SELECT USERNAME FROM DBA_USERS WHERE USERNAME = 'PERFSTAT';

8.PERFSTATのパスワードを初期化する。
※パスワードは「'」で括らない。

ALTER USER perfstat IDENTIFIED BY <new_password> ACCOUNT UNLOCK;

9.PERFSTATユーザーでログインし直す。

10.1時間間隔でSTATSPACKスナップショットを作成するジョブを作成する。

variable jn number;
execute dbms_job.submit(:jn, 'statspack.snap;',sysdate,'trunc(SYSDATE+1/24,''HH24'')');
commit; 

11.statspackが1つ作成されたことを確認する。

select snap_id, snap_time from stats$snapshot order by 1;

12.今回はStatspackレポートまでをすぐに確認したいので、手動でSTATSPACKをもうひとつ作成する。

execute statspack.snap

13.statspackが2つ作成されたことを確認する。
この時、snap_idをメモしておく。

select snap_id, snap_time from stats$snapshot order by 1;

14.Statspackスナップショットが2つ作られたので、Statspack レポートを作成する。
※下記ではSNAP_IDが1と2の間の間隔に基づいてレポートが作成される。

exec RDSADMIN.RDS_RUN_SPREPORT(1,2);

15.ブラウザに戻って作業。

16.左メニューでデータベースを選択し、該当のインスタンスを選択する。

17.ログとイベントのタブを選択する。

18.ログセクションで検索欄(db イベントのフィルタリング)に「spreport」と入力すると、作成したstatspackレポートのみに絞り込まれる。

19.該当レポートを選択し、ダウンロードを選択する。

20.画面の指示に従い、ダウンロードする。

事後処理

設定作業で1時間間隔でstatspackスナップショットを作成するようジョブを設定したので、これを停止(削除)したい場合にやること。

1.スナップショット作成ジョブを確認し、jobの値を取得する。

select job, what from dba_jobs where what = 'statspack.snap;';

2.jobを指定してスナップショット作成ジョブを停止する。

execute dbms_job.remove(1);
commit; 

3.スナップショット作成ジョブがなくなったことを確認する。

select job, what from dba_jobs where what = 'statspack.snap;';

とりあえず初期設定の仕方は以上。