Oracle SPM: differenze tra le versioni

Da Emigar.
Jump to navigation Jump to search
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:

A differenza degli SQL Profile, non richiede licenza diagnostic e tuning.
Utilizzabile sulla EE e dalla 18 anche sulla SE, sebbene con alcune limitazioni.

=Forzare un piano=
=Forzare un piano=


Riga 10: Riga 14:
Esempio:
Esempio:
exec dbms_spm.load_plans_for_cursor_cache(sql_id=>'b05n0m9gmkj06',plan_hash_value=>23432123,fixed=>'YES',enabled=>'YES');
exec dbms_spm.load_plans_for_cursor_cache(sql_id=>'b05n0m9gmkj06',plan_hash_value=>23432123,fixed=>'YES',enabled=>'YES');




=SQL Baseline Plan=
Per forzare un piano di esecuzione trovato nella sql cursor cache, di cui si conosce l'hash value:
Cerca il piano di esecuzione con:
--
set autotrace off
set pagesize 200
set linesize 200
select DBMS_LOB.substr(sql_fulltext, 3000) from v$sql where sql_id = '&1';
select * from table(DBMS_XPLAN.DISPLAY_CURSOR(sql_id=>'&1',cursor_child_no=>&2));

Trovato l'hash value, si può stabilizzare con:
--
declare
my_plans pls_integer;
begin
my_plans:=DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(SQL_ID=>'&1',PLAN_HASH_VALUE=>'&2',FIXED=>'YES',ENABLED=>'YES');
end;
/





Versione attuale delle 15:38, 10 nov 2022

A differenza degli SQL Profile, non richiede licenza diagnostic e tuning. Utilizzabile sulla EE e dalla 18 anche sulla SE, sebbene con alcune limitazioni.

Forzare un piano

DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE (
  sql_id            IN  VARCHAR2,
  plan_hash_value   IN  NUMBER   := NULL,
  fixed             IN  VARCHAR2 := 'NO',
  enabled           IN  VARCHAR2 := 'YES')
RETURN PLS_INTEGER;

Esempio:

exec dbms_spm.load_plans_for_cursor_cache(sql_id=>'b05n0m9gmkj06',plan_hash_value=>23432123,fixed=>'YES',enabled=>'YES');



SQL Baseline Plan

Per forzare un piano di esecuzione trovato nella sql cursor cache, di cui si conosce l'hash value: Cerca il piano di esecuzione con:

--
set autotrace off
set pagesize 200
set linesize 200
select DBMS_LOB.substr(sql_fulltext, 3000) from v$sql where sql_id = '&1';
select * from table(DBMS_XPLAN.DISPLAY_CURSOR(sql_id=>'&1',cursor_child_no=>&2));

Trovato l'hash value, si può stabilizzare con:

--
declare
 my_plans pls_integer;
begin
 my_plans:=DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(SQL_ID=>'&1',PLAN_HASH_VALUE=>'&2',FIXED=>'YES',ENABLED=>'YES');
end;
/