código

sábado, 20 de diciembre de 2025

Comprar planes de ejecución en el AWR

 A partir de oracle 19c, se ha introcido una nueva funcionalidad en el paquete DBMS_XPLAN, es la posibilidad de comparar planes de ejecución desde distintas fuentes.

En mi caso, el cliente tiene licencia de tuning & diagnostic pack, por lo que suelo usar frecuentemente las vistas del awr para ver la evolución de los planes de ejecución o directamente localizar los planes que cambien


Así teniendo el sql_id y el plan_hash_value de cada uno el DBMS_XPLAN.COMPARE_PLANS nos los compara y nos saca el informe.


--sql_compare_plans_awr.sql

--sysassysdba@gmail.com orarman.blogger.com


set echo off

set verify off

set feedback off

set linesize 300

SET PAGESIZE 500


UNDEFINE PLHASHCOMP

UNDEFINE PLHASHREF

UNDEFINE SQL_ID


ACCEPT SQLID PROMPT 'SQLID TO compare --> '

ACCEPT PLHASHREF PROMPT 'PLAN_HASH_VALUE OF REFERENCCE PLAN --> '

ACCEPT PLHASHCOMP PROMPT 'PLAN_HASH_VALUE OF COMPARE PLAN --> '


spool LOGS/compare_sql_'&sqlid'_hashs_'&PLHASHREF'_vs_'&PLHASHCOMP'.txt

VARIABLE v_rep CLOB

  

BEGIN

 :v_rep := DBMS_XPLAN.COMPARE_PLANS(

 reference_plan => awr_object('&sqlid', null, null, &PLHASHREF),

 compare_plan_list => plan_object_list(awr_object('&sqlid', null, null, &PLHASHCOMP)),

 type => 'TEXT',

 level => 'ALL',

 section => 'ALL');

 END;


set long 100000

COLUMN report FORMAT a250


SELECT :v_rep REPORT FROM DUAL;

spool off

UNDEFINE PLHASHCOMP

UNDEFINE PLHASHREF

UNDEFINE SQL_ID

set feedback on

set verify on

set echo on



No hay comentarios:

Publicar un comentario