Oracle を実行している Amazon RDS DB インスタンスのパフォーマンス統計を確認する方法を教えてください。

最終更新日: 2019 年 8 月 30 日

Oracle を実行している Amazon Relational Database Service (Amazon RDS) インスタンスのパフォーマンス統計を確認して、DB インスタンスのパフォーマンスを分析および調整するにはどうすればよいですか?

簡単な説明

RDS DB インスタンスで Oracle Statspack を使用して、パフォーマンスデータを収集、保存、表示できます。Statspack は、DB スナップショットに基づいてレポートを生成します。これを使用して、一定期間の DB インスタンスのパフォーマンスを分析できます。詳細については、Statspack の Oracle ドキュメントを参照してください。

解決方法

Amazon RDS での Oracle Statspack の使用

1.    perfstat ユーザーが存在する場合は、次のコマンドを実行して perfstat を削除します。

SQL> DROP USER perfstat CASCADE;

2.    Statspack オプションを DB オプショングループに追加します。オプショングループがない場合は、新しいオプショングループを作成してから、オプショングループを DB インスタンスに割り当てます。

3.    Statspack オプションを追加すると、Oracle を実行している Amazon RDS インスタンスが自動的に Statspack をインストールします。これにより、データベース統計を収集してレポートを生成する perfstat ユーザーが作成されますが、デフォルトでは、perfstat ユーザーは DB インスタンスにアクセスできません。perfstat ユーザーのアクセスを許可するには、Amazon RDS マスターユーザーとして DB インスタンスにログインし、次のようなクエリを実行して perfstat ユーザーのパスワードをリセットします。

ALTER USER perfstat IDENTIFIED BY <new_password> ACCOUNT UNLOCK;

注: 必ず new_password を自分のパスワードに置き換えてください。

4.    perfstat ユーザーとしてログインしているときに、Amazon RDS コンソールで DB スナップショットを作成するか、次のコマンドを実行して DB スナップショットを手動で取得します。

SQL> exec statspack.snap (i_snap_level => 7, i_modify_parameter => 'TRUE');

注: DB スナップショットのキャプチャレベルを変更して、より詳細な情報を取得することもできます。このサンプルコマンドは、レベル 7 の DB スナップショットを取得します。これには、SQL および実行プランの使用状況、行ロック、およびセグメントレベルの I/O 統計が含まれます。

5.    オプションで、DB スナップショットを自動的に取得するように Oracle を設定します。次の手順では、1 時間に 1 つの DB スナップショットを自動的に取得するジョブを作成します。

SQL> set serveroutput on 
SQL> variable jn number; 
SQL> execute dbms_job.submit (:jn, 'statspack.snap;', sysdate, 'trunc(SYSDATE+1/24,''HH24'')');
SQL> execute dbms_output.put_line ('statspack job number:' || :jn);
SQL> commit;

6.    使用可能な DB スナップショットを表示するには、次のコマンドを実行します。

SQL> set linesize 32767; 
SQL> alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS';
SQL> select snap_id, snap_time from stats$snapshot order by 1;
    SNAP_ID SNAP_TIME
---------- -------------------
        :: ::
        11 2019/06/03 03:18:30
        12 2019/06/03 04:18:30
        :: ::

7.    3 つ以上の DB スナップショットが作成されたら、次のようなコマンドを実行して Statspack レポートを作成します。

SQL> exec RDSADMIN.RDS_RUN_SPREPORT (11,12);

注: このコマンド例は、11 および 12 の SNAP_ID を使用してレポートを作成します。レポート名は、trace/ORCL_spreport<INITIAL_SNAP_ID>_<FINAL_SNAP_ID>.lst のようになります。

8.    レポートを表示およびダウンロードするには、Amazon RDS コンソールを開き、ナビゲーションペインから [データベース] を選択します。DB インスタンスを選択し、[ログ] タブをクリックします。

9.    保存された DB スナップショットは自動的に削除されないため、DB インスタンスのストレージスペースを消費する可能性があります。DB スナップショットを手動でパージするには、次のように開始 SNAP_ID と終了 SNAP_ID を指定します。

SQL> execute statspack.purge(<INITIAL_SNAP_ID>, <END_SNAP_ID>);

Amazon RDS での Oracle Statspack の使用を停止する

1.    Statspack の自動取得を停止するには、作成したジョブを削除します。ジョブ番号を取得するには、次のコマンドを実行します。

SQL> select job, what FROM user_jobs;

2.    ジョブを削除するには、次のコマンドを実行します。

SQL> execute dbms_job.remove (<job_id>);

注: 必ず job_id を自分のジョブ ID に置き換えてください。

DB オプショングループから Statspack オプションを削除すると、perfstat ユーザーと DB スナップショットが削除され、保存されているすべての DB スナップショットが削除されます。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合