View a markdown version of this page

Gerenciamento de planos SQL em tempo real no RDS para Oracle - Amazon Relational Database Service

Gerenciamento de planos SQL em tempo real no RDS para Oracle

A partir do Oracle Database 26ai (26.0.0.0), o Amazon RDS para Oracle é compatível com o gerenciamento de planos SQL em tempo real. Esse recurso evita regressões de desempenho de SQL ao detectar alterações nos planos de execução, avaliá-las em relação a planos anteriores e selecionar, quando necessário, o plano com melhor desempenho de uma linha de base de plano SQL. Esse processo é transparente e não requer intervenção manual.

Para habilitar o gerenciamento de planos SQL em tempo real no RDS para Oracle, use DBMS_SPM.CONFIGURE para ativar a tarefa de evolução automática. Em seguida, use o pacote rdsadmin.rdsadmin_spm_util para configurar os parâmetros da tarefa pertencente ao SYS.

Visão geral

Uma regressão de desempenho de SQL ocorre quando o otimizador do Oracle escolhe um novo plano de execução que apresenta desempenho inferior ao de um plano anterior. O gerenciamento de planos SQL em tempo real automatiza a detecção e a prevenção dessas regressões.

Quando o gerenciamento de planos SQL em tempo real está habilitado, o banco de dados faz o seguinte:

  1. Detecta alterações nos planos de execução em tempo real.

  2. Avalia o desempenho do novo plano em relação aos planos anteriores.

  3. Cria ou atualiza automaticamente as linhas de base de planos SQL.

  4. Seleciona o plano com melhor desempenho para evitar regressões.

Requisitos

Para usar o gerenciamento de planos SQL em tempo real, sua instância de banco de dados deve atender aos seguintes requisitos:

  • Oracle Database 26ai ou superior

  • Oracle Enterprise Edition

Habilitar o gerenciamento de planos SQL em tempo real

Para habilitar o gerenciamento de planos SQL em tempo real, conclua as duas etapas a seguir.

Etapa 1: ativar a tarefa de evolução automática do SPM

Execute a instrução a seguir como usuário mestre ou como um usuário com a função DBA:

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

Etapa 2: configurar os parâmetros da tarefa pertencente ao SYS

A tarefa SYS_AUTO_SPM_EVOLVE_TASK pertence ao SYS. O RDS para Oracle fornece o pacote rdsadmin.rdsadmin_spm_util para essa finalidade.

Defina ACCEPT_PLANS como TRUE para que o banco de dados aceite automaticamente os planos evoluídos:

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

(Opcional) Defina a origem alternativa do plano como AUTO:

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

Como verificar a configuração

Para verificar se o gerenciamento de planos SQL em tempo real está habilitado, execute a seguinte consulta:

SELECT parameter_value FROM DBA_SQL_MANAGEMENT_CONFIG WHERE parameter_name = 'AUTO_SPM_EVOLVE_TASK';

A consulta retorna AUTO.

Para verificar as configurações dos parâmetros da tarefa, execute a seguinte consulta:

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');

Desabilitar o gerenciamento de planos SQL em tempo real

Para desabilitar o gerenciamento de planos SQL em tempo real, execute a seguinte instrução:

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

rdsadmin_spm_util procedures

O pacote rdsadmin.rdsadmin_spm_util fornece os procedimentos a seguir.

rdsadmin_spm_util procedures
Procedimento Parâmetro Padrão Descrição

set_evolve_task_accept_plans

p_value

'TRUE'

Define o parâmetro ACCEPT_PLANS para SYS_AUTO_SPM_EVOLVE_TASK. Os valores válidos são 'TRUE' e 'FALSE'.

set_evolve_task_alternate_plan_source

p_value

'AUTO'

Define o parâmetro ALTERNATE_PLAN_SOURCE para SYS_AUTO_SPM_EVOLVE_TASK. Os valores válidos são 'AUTO', 'CURSOR_CACHE', 'AUTOMATIC_WORKLOAD_REPOSITORY' e 'SQL_TUNING_SET'.

Monitorar linhas de base de planos SQL

Depois de habilitar o gerenciamento de planos SQL em tempo real, é possível monitorar as linhas de base de planos que o banco de dados gerencia automaticamente:

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

Considerações

Considere o seguinte ao usar o gerenciamento de planos SQL em tempo real:

  • Usuários com a função DBA podem chamar DBMS_SPM.CONFIGURE diretamente. Essa etapa não requer um wrapper.

  • Os procedimentos rdsadmin.rdsadmin_spm_util são necessários para configurar os parâmetros da tarefa SYS_AUTO_SPM_EVOLVE_TASK pertencente ao SYS, porque o usuário mestre não tem acesso direto às tarefas do Advisor pertencentes ao SYS.

  • O gerenciamento de planos SQL em tempo real opera de forma transparente. Não é necessário alterar o código da aplicação.

  • As linhas de base de planos SQL consomem espaço no tablespace SYSAUX. Monitore o uso do SYSAUX depois de habilitar o recurso.

  • Os valores dos parâmetros passados para DBMS_SPM.CONFIGURE (como 'AUTO' e 'OFF') diferenciam maiúsculas de minúsculas. Use valores em letras maiúsculas.

Recursos relacionados