Oracle SQL Plan Management – 23AI Recursos de backported para 19.22
{Abhilash Kumar Bhattaram: Siga no LinkedIn} As declarações SQL de Tuning sempre foram uma dor persistente para os DBAs. Cloud ou no PREM, as instruções SQL precisam evoluir constantemente com as entradas das equipes de aplicativos e sua escalabilidade. O gerenciamento do SQL Plan Management Oracle SQL Plan Management existe desde 12.x, mas é preciso algum esforço para informar o banco de dados do Oracle que um plano SQL pode eveolve como um plano melhor disponível. Deve -se sempre encaminhar o link do Oracle Docuentation nos fundamentos do desempenho do SQL aqui, este é um bom lugar para começar a ler se você é novo no ajuste do gerenciamento do Plano SQL SQL SQL, o que já estava disponível nas versões mais antigas? Em ambientes pré -19.22, o seguinte precisaria ser feito, identificar e carregar linhas de base SQL de conjuntos de ajuste Cursor / SQL / AWR Evoluir SQL Baselines para a referência SQL aqui, meu código -fonte de SQL para usar o gerenciamento de SQL para usar o SQL STENF STENF STILIFERIFIDE O MANGERENT STEF STIFET STENF SQL Management do SQL A seguir, é o meu github para que o SQL Plan Management Management de Sql Plan To Sql Awr, oratop, etc ..) Etapa 1 É preciso identificar quais são os valores de hash do plano SQL e as linhas de base do gerenciamento do plano SQL atualmente disponíveis ORCL> @SPM_LIS Plan_hash_value | sql_plan_baseline | Execuções | Itens do anotações | Exact_matching_signature | sql_text —– | ————– | ————– | ——————————– | —————— | —————— | ———————— | ——————————————- | 2441334682 | | 1327555 | 17554624 | 4628050212597469622 | Selecione contagem (1) de ordens_m.t_ord_prd_ms c, orde 1 | Az1y2nzz8y42a | 4222704632 | | 99 | 184297216 | 4628050212597469622 | Selecione a contagem (1) de ordens_m.t_ord_prd_ms c, orden decorrido: 00: 00: 01.01 Nenhuma linhas selecionadas Modo de tela inteira Etapa #2 nada Mas nada Mas 00: 00: 00. Você pode ver de cima que existem 2 planos SQL em uso 2441334682 e 4222704632, com a aparência, parece que 2441334682 parece mais eficiente. Normally I would force this Plan Hash Value to the cursor but that would also mean that Oracle optimizer may not be in a position to evlove into So we would need Oracle Optimizer to decide which of the available Plan Hash Values it can base line for the SQL Step #2 Use DBMS_SPM.ADD_VERIFIED_SQL_PLAN_BASELINEfor the identified sql_id Reference : The official documentation for DBMS_SPM.ADD_VERIFICE_SQL_PLAN_BASELINE ESTÁ AQUI DO OLHA O ORACLE DIZ (conforme documentação) para DBMS_SPM.Add_VeriFed_SQL_PLAN_BASELINE SQL Plano Baselines são criados para garantir que os planos mais conhecidos sejam usados para a instrução SQL. Essas são as etapas que a função executa: carrega planos do cache do cursor, repositório automático de carga de trabalho e conjunto de ajustes do Auto SQL (sys_auto_sts) no histórico do plano SQL de gerenciamento do SQL em um estado não aceito. Usa o SQL Plan Management Evolve Advisor Internamente para identificar os planos de execução com melhor desempenho. Os planos com melhor desempenho são aceitos. Quando a função for concluída, ela terá aceitado os melhores planos entre os planos disponíveis no cache do cursor, AWR e o conjunto automático de ajuste SQL. O que é fascinante é que isso encontre e implemente o melhor plano SQL disponível e também fornece espaço para evoluir quaisquer planos SQL que surgem da etapa 3 Implemente o melhor plano SQL e permitam que ele evolui usando DBMS_SPM.Add_Verificado_SQL_Plan_baseline agora para o sql1y2nzz8y42a i faria como orlep. Dbms_sp.add_verifed_sql_plan_baseline orcl> @spm_addv az1y2nzz8y42a procedimento PL/SQL Concluído com êxito. PLAN_TABLE_OUTPUT ——————————————————————————————– Handalista: SQL_403A2325DC8B11B6 SQL Text:< truncated SQL Text >> ——————————————————————————– ——————————————————————————– Plan name: SQL_PLAN_40fj34rf8q4dq8be5cf75 Plan id: 2347093877 Enabled: YES Fixed: NO Accepted: YES Origin: EVOLVE-LOAD-FROM-CURSOR-CACHE Plan rows: From Dictionary ——————————————————————————- Plano Hash Valor: 2441334682 Digite Modo de tela cheia de tela FullScreen Plan_hash_value | sql_plan_baseline | Execuções | Itens do anotações | Exact_matching_signature | sql_text —– | ————– | ————– | ——————————– | —————— | —————— | ———————— | ——————————————- | 2441334682 | | 1327555 | 17554624 | 4628050212597469622 | Selecione contagem (1) de ordens_m.t_ord_prd_ms c, orde 1 | Az1y2nzz8y42a | 4222704632 | | 99 | 184297216 | 4628050212597469622 | Selecione contagem (1) de ordens_m.t_ord_prd_ms c, orde 1 | Az1y2nzz8y42a | 2441334682 | SQL_PLAN_40FJ34RF8Q4DQ8BE5CF75 | 191 | 39968 | 4628050212597469622 | Selecione a contagem (1) de ordens_m.t_ord_prd_ms c, orde sql_handle | plan_name | ativado | aceito | corrigido | Criado ————————————————————————————————————————————————————————————————————————————————————————————————————————————————— SQL_403A2325DC8B11B6 | SQL_PLAN_40FJ34RF8Q4DQ8BE5CF75 | SIM | Sim | Não | 24-AG-25 10.57.26.578422 PM Digite o modo de tela cheia de tela cheia que você pode ver aqui, a seguir, é realizada. O melhor plano 2441334682 para SQL AZ1Y2NZZ8Y42A BASELINADO BASELINADO E ESTÁ DESTAÇÃO A linha de base está definida como “Evoluve-Cargas-From-Cursor-Cache”, o que significa que, assim que um plano mais recente estiver disponível, o Oracle tentará usá-lo após verificá-lo. Este é provavelmente um dos melhores recursos de 23AI a 19C de 23AI que é muito necessário.
Fonte