

# Oracle Statspack
<a name="Appendix.Oracle.Options.Statspack"></a>

Oracle Statspack オプションは、Oracle Statspack パフォーマンス統計機能をインストールして有効にします。Oracle Statspack は、パフォーマンスデータを収集、保存、表示する SQL、PL/SQL、および SQL\$1Plus スクリプトのコレクションです。Oracle Statspack 使用の詳細には、Oracle ドキュメントの「[Oracle Statspack](http://docs.oracle.com/cd/E13160_01/wli/docs10gr3/dbtuning/statsApdx.html)」を参照してください。

**注記**  
Oracle Statspack は、Oracle によるサポートが停止されたため、より高度な自動ワークロードリポジトリ (AWR) に置き換えられました。AWR は、Diagnostics Pack を購入した Oracle Enterprise Edition のお客様だけが使用できます。Oracle Statspack は、Amazon RDS 上の任意の Oracle DB エンジンで使用できます。Amazon RDS リードレプリカでは Oracle Statspack を実行できません。

## Oracle Statspack のセットアップ
<a name="Appendix.Oracle.Options.Statspack.setting-up"></a>

Statspack スクリプトを実行するには、Statspack オプションを追加する必要があります。

**Oracle Statspack をセットアップするには**

1. SQL クライアントで、管理アカウントを使用して Oracle DB にログインします。

1. Statspack がインストールされているかどうかに応じて、次のいずれかの操作を行います。
   + Statspack がインストールされていて、`PERFSTAT` アカウントが Statspack に関連付けられている場合は、ステップ 4 に進みます。
   + Statspack がインストールされておらず、`PERFSTAT` アカウントが存在する場合は、次のようにアカウントを削除します。

     ```
     DROP USER PERFSTAT CASCADE;
     ```

     それ以外の場合は、Statspack オプションを追加しようとすると、エラーと `RDS-Event-0058` が生成されます。

1. オプショングループに Statspack オプションを追加します。「[オプショングループにオプションを追加する](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)」を参照してください。

   Amazon RDS は、DB インスタンスに Statspack スクリプトを自動的にインストールしてから、 `PERFSTAT` アカウントを設定します。

1. 次の SQL 文を使用してパスワードをリセットし、*pwd* を新しいパスワードに置き換えます。

   ```
   ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;
   ```

   `PERFSTAT` ユーザーアカウントを使用してログインし、Statspack スクリプトを実行できます。

1. 次のステートメントを使用して、`PERFSTAT` アカウントに `CREATE JOB` 権限を付与します。

   ```
   GRANT CREATE JOB TO PERFSTAT;
   ```

1. `PERFSTAT.STATS$IDLE_EVENT` テーブル内のアイドル待機イベントが設定されていることを確認します。

   Oracle バグ 28523746 のため、`PERFSTAT.STATS$IDLE_EVENT` のアイドル待機イベントが設定されていないことがあります。すべてのアイドルイベントが利用可能であることを確認するには、次のステートメントを実行します。

   ```
   INSERT INTO PERFSTAT.STATS$IDLE_EVENT (EVENT)
   SELECT NAME FROM V$EVENT_NAME WHERE WAIT_CLASS='Idle'
   MINUS
   SELECT EVENT FROM PERFSTAT.STATS$IDLE_EVENT;
   COMMIT;
   ```

## Statspack レポートの生成
<a name="Appendix.Oracle.Options.Statspack.generating-reports"></a>

Statspack レポートでは、2 つのスナップショットを比較します。

**Statspack レポートを生成するには**

1. SQL クライアントで、`PERFSTAT` アカウントを使用して Oracle DB にログインします。

1. 次のいずれかの方法を使用して、スナップショットを作成します。
   + Statspack スナップショットを手動で作成します。
   + 特定の時間間隔の後に Statspack スナップショットを取得するジョブを作成します。例えば、次のジョブは Statspack スナップショットを 1 時間おきに作成します。

     ```
     VARIABLE jn NUMBER;
     exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')');
     COMMIT;
     ```

1. 次のクエリを使用してスナップショットを表示します。

   ```
   SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
   ```

1. Amazon RDS プロシージャ `rdsadmin.rds_run_spreport` を実行し、*begin\$1snap* と *end\$1snap* をスナップショット ID に置き換えます。

   ```
   exec rdsadmin.rds_run_spreport(begin_snap,end_snap);
   ```

   例えば、次のコマンドでは、Statspack スナップショット 1 と 2 の間の間隔に基づいてレポートが作成されます。

   ```
   exec rdsadmin.rds_run_spreport(1,2);
   ```

   Statspack レポートのファイル名には、2 つのスナップショットの番号が含まれます。例えば、Statspack スナップショット 1 および 2 を使用して作成されたレポートファイルの名前は `ORCL_spreport_1_2.lst` になります。

1. 出力にエラーがないかモニタリングします。

   Oracle Statspack は、レポートを実行する前にチェックを実行します。したがって、コマンド出力にエラーメッセージが表示される可能性もあります。例えば、スタートの Statspack スナップショット値が終了値よりも大きい、無効な範囲に基づいてレポートを生成しようとするとします。この場合、出力にはエラーメッセージが表示されますが、DB エンジンはエラーファイルを生成しません。

   ```
   exec rdsadmin.rds_run_spreport(2,1);
   *
   ERROR at line 1:
   ORA-20000: Invalid snapshot IDs. Find valid ones in perfstat.stats$snapshot.
   ```

   無効な番号の Statspack スナップショットを使用すると、出力にエラーが表示されます。例えば、スナップショット 1 と 50 のレポートを生成しようとして、スナップショット 50 が存在しない場合、出力にはエラーが表示されます。

   ```
   exec rdsadmin.rds_run_spreport(1,50);
   *
   ERROR at line 1:
   ORA-20000: Could not find both snapshot IDs
   ```

1. (オプション) 

   レポートを取得するには、[Oracle トレースファイルを使用する](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles) で説明されているように、トレースファイルプロシージャを呼び出します。

   または、RDS コンソールから Statspack レポートをダウンロードします。DB インスタンスの詳細の **[ログ]** セクションに移動し、**[ダウンロード]** を選択します。次の例は、`trace/ORCL_spreport_1_2.lst` を示します。  
![\[RDS コンソールに Oracle ログファイルのリストを表示します。次のトレースファイルは丸で囲まれています。trace/ORCL_spreport_1_2.lst。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/statspack1.png)

   レポートの生成中にエラーが発生した場合、DB エンジンはレポートと同じ命名規則を使用しますが、拡張子は `.err` です。例えば、Statspack スナップショット 1 および 7 を使用してレポートを作成するときにエラーが発生した場合、レポートファイルの名前は `ORCL_spreport_1_7.err` になります。エラーレポートは、スタンダードのスナップショットレポートと同じ方法でダウンロードできます。

## Statspack スナップショットの削除
<a name="Appendix.Oracle.Options.Statspack.removing-files"></a>

一定の範囲の Oracle Statspack スナップショットを削除するには、次のコマンドを使用します。

```
exec statspack.purge(begin snap, end snap); 
```