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.
Tópicos
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:
-
Detecta alterações nos planos de execução em tempo real.
-
Avalia o desempenho do novo plano em relação aos planos anteriores.
-
Cria ou atualiza automaticamente as linhas de base de planos SQL.
-
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.
| Procedimento | Parâmetro | Padrão | Descrição |
|---|---|---|---|
|
|
|
|
Define o parâmetro |
|
|
|
|
Define o parâmetro |
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.CONFIGUREdiretamente. Essa etapa não requer um wrapper. -
Os procedimentos
rdsadmin.rdsadmin_spm_utilsão necessários para configurar os parâmetros da tarefaSYS_AUTO_SPM_EVOLVE_TASKpertencente 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
-
DBMS_SPM
na documentação do Oracle -
Managing SQL plan baselines
na documentação do Oracle Database