RDS for Oracle 中的实时 SQL 计划管理 - Amazon Relational Database Service

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 拥有的任务参数。

概述

当 Oracle 优化程序选择的新执行计划比以前的计划性能更差时,就会出现 SQL 性能回归。实时 SQL 计划管理可自动检测和预防这些回归。

启用实时 SQL 计划管理后,数据库将执行以下操作:

  1. 实时检测执行计划更改。

  2. 对照先前的计划评估新计划的性能。

  3. 自动创建或更新 SQL 计划基准。

  4. 选择性能最佳的计划以防止回归。

要求

要使用实时 SQL 计划管理,您的数据库实例必须满足以下各项要求:

  • Oracle Database 26ai 或更高版本

  • Oracle Enterprise Edition

启用实时 SQL 计划管理

要启用实时 SQL 计划管理,请完成以下两个步骤。

步骤 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_PLANS 设置为 TRUE,以便数据库自动接受演进的计划:

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_TASK 设置 ACCEPT_PLANS 参数。有效值为 'TRUE''FALSE'

set_evolve_task_alternate_plan_source

p_value

'AUTO'

SYS_AUTO_SPM_EVOLVE_TASK 设置 ALTERNATE_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。此步骤不需要包装器。

  • rdsadmin.rdsadmin_spm_util 过程是在 SYS 拥有的 SYS_AUTO_SPM_EVOLVE_TASK 任务上配置任务参数所必需的,因为主用户无法直接访问 SYS 拥有的顾问任务。

  • 实时 SQL 计划管理以透明方式运行。您无需更改应用程序代码。

  • SQL 计划基准占用 SYSAUX 表空间中的空间。开启该功能后,监控 SYSAUX 使用情况。

  • 传递给 DBMS_SPM.CONFIGURE 的参数值(例如 'AUTO''OFF')区分大小写。使用大写值。

相关资源