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 スナップショットが削除されます。