3.4.4 Exadataシステム統計の使用

システム統計によってCPUとストレージのパフォーマンスが測定され、Oracle DatabaseオプティマイザでSQL実行プランを評価する際にこれらの入力を使用できます。

最初のインスタンスの起動時に、Oracle Databaseはデフォルトのシステム統計を自動的に収集します。この統計は、noworkload統計とも呼ばれます。ただし、Exadata固有のシステム統計を収集することもできます。Exadataシステム統計により、Oracle Exadata Database Machineのパフォーマンス特性が考慮されることがSQLオプティマイザで保証されます。

Exadata固有の統計が使用されているかどうかを確認するには、次のSQLコマンドを使用します。

SQL> SELECT pname, PVAL1 FROM aux_stats$ WHERE pname='MBRC';

PVAL1がNULLの場合、デフォルトのシステム統計が使用されます。

次のコマンドは、データベース・オプティマイザが使用するExadataシステム統計を収集します。

SQL> exec DBMS_STATS.GATHER_SYSTEM_STATS('EXADATA');

必要に応じて、DBMS_STATS.DELETE_SYSTEM_STATSプロシージャを使用してデータベースを再起動することで、デフォルトのシステム統計に戻すことができます。

新しいアプリケーションまたはデプロイメントの場合、本番前システム・テストを実行して、デフォルトのシステム・パフォーマンスをExadataシステム統計を使用したパフォーマンスと比較する必要があります。

既存のアプリケーションまたはデプロイメントの場合、Exadataシステム統計は、本番システムで初めて使用する前に、同等のテスト・システムで生成およびテストする必要があります。このアプローチにより、本番システムでの予期しないパフォーマンス低下のリスクが軽減されます。

同等のテスト・システムが使用できない場合、本番のExadataシステム統計をテスト・システムにコピーすることで、より現実的なテストを実行できます。手順は次のとおりです。

  1. 本番システムで統計表を作成します。

    次に例を示します:

    SQL> exec DBMS_STATS.CREATE_STAT_TABLE(stattab => 'exadata_stats');
  2. 本番システムで、新しく作成した表にExadataシステム統計を収集します。

    次に例を示します:

    SQL> exec DBMS_STATS.GATHER_SYSTEM_STATS(gathering_mode => 'EXADATA', stattab => 'exadata_stats');

    ユーザー定義統計表に格納されている統計は、システムでは使用されません。そのため、これらの統計を収集しても、本番システムのパフォーマンスには影響しません。

  3. 本番システムからテスト・システムに統計表をコピーします。

    データ・ポンプのエクスポートやインポートなど、様々な方法で表をコピーできます。

  4. テスト・システムで、統計表をOracleデータ・ディクショナリにインポートします。

    次に例を示します:

    SQL> exec DBMS_STATS.IMPORT_SYSTEM_STATS(stattab => 'exadata_stats');

関連トピック