Oracle SPM: differenze tra le versioni

Da Emigar.
Jump to navigation Jump to search
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:


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


=Forzare un piano=
=Forzare un piano=
Riga 14: 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;
/