View a markdown version of this page

RDS for Oracle でのリアルタイム SQL 計画管理 - Amazon Relational Database Service

RDS for Oracle でのリアルタイム SQL 計画管理

Oracle Database 26ai (26.0.0.0) 以降、Amazon RDS for Oracle はリアルタイム SQL 計画管理をサポートしています。この機能は、実行計画の変更を検出し、以前の計画と照らし合わせて評価し、必要に応じて SQL 計画ベースラインから最もパフォーマンスの高い計画を選択することで、SQL パフォーマンスのリグレッションを防ぎます。このプロセスは透過的であり、手動による介入は必要ありません。

RDS for Oracle でリアルタイム SQL 計画管理を有効にするには、DBMS_SPM.CONFIGURE を使用して自動進化タスクを有効にします。次に、rdsadmin.rdsadmin_spm_util パッケージを使用して SYS 所有のタスクパラメータを設定します。

概要

SQL パフォーマンスのリグレッションは、Oracle オプティマイザが以前の計画よりもパフォーマンスが低い新しい実行計画を選択した場合に発生します。リアルタイム SQL 計画管理は、これらのリグレッションの検出と防止を自動化します。

リアルタイム SQL 計画管理が有効になっている場合、データベースは以下を実行します。

  1. 実行計画の変更をリアルタイムで検出します。

  2. 新しい計画のパフォーマンスを以前の計画と照らし合わせて評価します。

  3. SQL 計画ベースラインを自動的に作成または更新します。

  4. リグレッションを防ぐために、最もパフォーマンスの高い計画を選択します。

要件

リアルタイム SQL 計画管理を使用するには、DB インスタンスが次の要件を満たしている必要があります。

  • Oracle Database 26ai 以降

  • Oracle Enterprise Edition

リアルタイム SQL 計画管理

リアルタイム SQL 計画管理を有効にするには、次の 2 つのステップを実行します。

ステップ 1: 自動 SPM 進化タスクを有効にする

マスターユーザーとして、または DBA ロールを持つユーザーとして、次のステートメントを実行します。

BEGIN DBMS_SPM.CONFIGURE('AUTO_SPM_EVOLVE_TASK', 'AUTO'); END; /

ステップ 2: SYS 所有のタスクパラメータを設定する

SYS_AUTO_SPM_EVOLVE_TASK タスクは SYS によって所有されます。RDS for Oracle は、この目的で rdsadmin.rdsadmin_spm_util パッケージを提供します。

データベースが進化したプランを自動的に受け入れるように ACCEPT_PLANSTRUE に設定します。

EXEC rdsadmin.rdsadmin_spm_util.set_evolve_task_accept_plans('TRUE');

(オプション) 代替計画ソースを AUTO に設定します。

EXEC rdsadmin.rdsadmin_spm_util.set_evolve_task_alternate_plan_source('AUTO');

設定の確認

リアルタイム SQL 計画管理が有効になっていることを確認するには、次のクエリを実行します。

SELECT parameter_value FROM DBA_SQL_MANAGEMENT_CONFIG WHERE parameter_name = 'AUTO_SPM_EVOLVE_TASK';

このクエリは AUTO を返します。

タスクパラメータの設定を確認するには、次のクエリを実行します。

SELECT parameter_name, parameter_value FROM DBA_ADVISOR_PARAMETERS WHERE task_name = 'SYS_AUTO_SPM_EVOLVE_TASK' AND parameter_name IN ('ACCEPT_PLANS', 'ALTERNATE_PLAN_SOURCE');

リアルタイム SQL 計画管理の無効化

リアルタイム SQL 計画管理を無効にするには、次のステートメントを実行します。

BEGIN DBMS_SPM.CONFIGURE('AUTO_SPM_EVOLVE_TASK', 'OFF'); END; /

rdsadmin_spm_util プロシージャ

rdsadmin.rdsadmin_spm_util パッケージには、次のプロシージャが用意されています。

rdsadmin_spm_util プロシージャ
手順 パラメータ デフォルト 説明

set_evolve_task_accept_plans

p_value

'TRUE'

SYS_AUTO_SPM_EVOLVE_TASKACCEPT_PLANS パラメータを設定します。有効な値は、'TRUE' および 'FALSE' です。

set_evolve_task_alternate_plan_source

p_value

'AUTO'

SYS_AUTO_SPM_EVOLVE_TASKALTERNATE_PLAN_SOURCE パラメータを設定します。有効な値は、'AUTO''CURSOR_CACHE''AUTOMATIC_WORKLOAD_REPOSITORY'、および 'SQL_TUNING_SET' です。

SQL 計画ベースラインのモニタリング

リアルタイム SQL 計画管理を有効にすると、データベースが自動的に管理する計画ベースラインをモニタリングできます。

SELECT SQL_HANDLE, PLAN_NAME, ENABLED, ACCEPTED, AUTOPURGE FROM DBA_SQL_PLAN_BASELINES ORDER BY LAST_MODIFIED DESC;

考慮事項

リアルタイム SQL 計画管理を使用する場合は、次の点を考慮してください。

  • DBA ロールを持つユーザーは、DBMS_SPM.CONFIGURE を直接呼び出すことができます。このステップでは、ラッパーは必要ありません。

  • マスターユーザーは SYS 所有のアドバイザータスクに直接アクセスできないため、rdsadmin.rdsadmin_spm_util の手順は SYS 所有の SYS_AUTO_SPM_EVOLVE_TASK タスクでタスクパラメータを設定するために必要です。

  • リアルタイム SQL 計画管理は透過的に動作します。アプリケーションコードを変更する必要はありません。

  • SQL 計画ベースラインは、SYSAUX テーブルスペースのスペースを消費します。この機能を有効すると、SYSAUX の使用状況がモニタリングされます。

  • DBMS_SPM.CONFIGURE に渡されるパラメータ値 ('AUTO''OFF' など) では、大文字と小文字が区別されます。大文字の値を使用します。

関連リソース