Autonomous Databaseでのオプティマイザ統計の管理

オプティマイザ統計の収集またはオプティマイザ・ヒントの有効化が必要な場合に実行するAutonomous Databaseのコマンドについて説明します。

オプティマイザ統計の収集またはオプティマイザ・ヒントの有効化のために実行するコマンドには、ワークロード(データ・ウェアハウス、トランザクション処理またはJSONデータベース)に応じて違いがあります。

データ・ウェアハウスのワークロードを使用したオプティマイザ統計およびヒントの管理

データ・ウェアハウスのワークロードを使用してオプティマイザ統計情報を収集したり、オプティマイザのヒントを有効にしたりする必要があるときに実行するAutonomous Databaseコマンドについて説明します。

データ・ウェアハウス・ワークロードを使用したオプティマイザ統計の管理

データ・ウェアハウス・ワークロードを使用したAutonomous Databaseは、SQLで発行されたダイレクト・パス操作でロードされた表のオプティマイザ統計を自動的に収集します(SQL*Loaderダイレクト・パスなど、SQLデータ処理を回避するダイレクト・パス・ロード操作では、統計は収集されません)。たとえば、DBMS_CLOUDパッケージを使用したロードでは、データベースがオプティマイザ統計を自動的に収集します。

従来のDML操作を使用して変更された表がある場合は、それらの表のオプティマイザ統計を収集するコマンドを実行できます。たとえば、SHスキーマについて、次のコマンドを使用してスキーマ内のすべての表の統計を収集できます:

BEGIN
  DBMS_STATS.GATHER_SCHEMA_STATS('SH', options=>'GATHER AUTO');
END;
/

この例では、SHスキーマの失効した統計を含むすべての表の統計が収集されます。

ダイレクト・パス・ロードの詳細は、表のロードに関する項を参照してください。

オプティマイザ統計の詳細は、『データベース概念』を参照してください。

データ・ウェアハウスのワークロードを使用したオプティマイザのヒントの管理

データ・ウェアハウスを使用するAutonomous Databaseは、デフォルトでSQL文内のオプティマイザ・ヒントおよびPARALLELヒントを無視します。アプリケーションがヒントに依存している場合、オプティマイザ・ヒントを有効にするには、ALTER SESSIONまたはALTER SYSTEMを使用して、セッション・レベルまたはシステム・レベルでパラメータOPTIMIZER_IGNORE_HINTSFALSEに設定します。たとえば、次のコマンドは、セッションでヒントを有効にします:

ALTER SESSION
   SET OPTIMIZER_IGNORE_HINTS=FALSE;

また、SQL文内のPARALLELヒントを有効にするには、ALTER SESSIONまたはALTER SYSTEMを使用して、セッション・レベルまたはシステム・レベルでOPTIMIZER_IGNORE_PARALLEL_HINTSFALSEに設定します。たとえば、次のコマンドはセッション内のPARALLELヒントを有効にします:

ALTER SESSION 
   SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;

トランザクション処理およびJSONデータベース・ワークロードを使用したオプティマイザ統計およびヒントの管理

オプティマイザ統計の収集またはオプティマイザ・ヒントの有効化が必要な場合に実行するAutonomous Databaseのコマンドについて説明します。

トランザクション処理およびJSONデータベース・ワークロードを使用したオプティマイザ統計の管理

Autonomous Databaseではオプティマイザ統計が自動的に収集されるため、このタスクを手動で実行する必要はなく、また、統計が常に最新であることを保証できます。自動統計収集はAutonomous Databaseで有効になっており、標準のメンテナンス・ウィンドウで実行されます。

ノート

自動統計収集のメンテナンス・ウィンドウは、Oracle Cloud Infrastructureコンソールのメンテナンス・ウィンドウと異なります。Oracle Cloud Infrastructureのメンテナンス・ウィンドウには、システム・パッチ適用情報が表示されます。

自動統計収集のメンテナンス・ウィンドウの時間と自動オプティマイザ統計収集の詳細は、『Database管理者ガイド』を参照してください。

オプティマイザ統計の詳細は、『SQLチューニング・ガイド』を参照してください。

トランザクション処理およびJSONデータベース・ワークロードを使用したオプティマイザ・ヒントの管理

トランザクション処理およびJSONデータベース・ワークロードを使用するAutonomous Databaseは、SQL文のオプティマイザ・ヒントおよびPARALLELヒントをデフォルトで使用します。オプティマイザ・ヒントを無効にするには、ALTER SESSIONまたはALTER SYSTEMを使用して、セッション・レベルでパラメータOPTIMIZER_IGNORE_HINTSTRUEに設定します。たとえば、次のコマンドは、セッションでヒントを無効にします:

ALTER SESSION
   SET OPTIMIZER_IGNORE_HINTS=TRUE;

また、SQL文内のPARALLELヒントを無効にするには、ALTER SESSIONまたはALTER SYSTEMを使用して、セッション・レベルまたはシステム・レベルでOPTIMIZER_IGNORE_PARALLEL_HINTSTRUEに設定します。

ALTER SESSION 
   SET OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE;