Oracle Live

25/08/2016

Database – SQL Tune

Filed under: Database — mogukiller @ 2:53 pm
Tags:

Nos podemos encontrar que aunque reconstruyamos indices, compactemos la tabla o pasemos estadísticas el plan de ejecución de nuestras queries no mejore. Una opcion que tenemos es pasar SQL Tune sobre la query para poder fijar un profile. Aqui os indico cómo:

-- Creamos un tarea.

-- Opcion 1: Introducimos el texto de la query

  DECLARE
   my_task_name VARCHAR2(30);
   my_sqltext   CLOB;
  BEGIN
   my_sqltext := 'select a.ref_recargasos ,b.imp_recarga ,b.fec_incsaldo 
from poge_recargassos a,poge_recargas b 
where ((((((a.num_telefono=:b0 and 
            a.ref_recargasos=b.ref_recarga) and 
            b.flg_anulacion is null ) and 
            a.ref_recarga is null ) and 
            b.fec_incsaldo is not null ) and 
            a.cod_particion=:b1) and 
            b.cod_particion=:b1)
';
   my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
           sql_text    => my_sqltext,
           user_name   => 'OPGE',
           scope       => 'COMPREHENSIVE',
           time_limit  => 60,
           task_name   => 'my_sql_tuning_task5',
           description => 'Task to tune a query on a specified table');
  END;
  /

-- Opcion 2: Introducimos la sql_id

SET SERVEROUTPUT ON
declare
stmt_task VARCHAR2(100);
begin
stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'dzkw24s80n82c');
DBMS_OUTPUT.put_line('task_id: ' || stmt_task );
end;
/

-- Ejecutamos la tarea.

   BEGIN
     DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => 'TASK_863');
  end;
   /

-- Obtenemos el reporte.
   
   SET LONG 100000
   SET LONGCHUNKSIZE 1000
   SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( 'TASK_863') from DUAL;

/*
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name   : my_sql_tuning_task_2
Scope              : COMPREHENSIVE
Time Limit(seconds): 60
Completion Status  : COMPLETED
Started at         : 05/04/2004 17:36:05
Completed at       : 05/04/2004 17:36:05

-------------------------------------------------------------------------------
SQL ID  : d4wgpc5g0s0vu

DBMS_SQLTUNE.REPORT_TUNING_TASK('MY_SQL_TUNING_TASK_2')
--------------------------------------------------------------------------------
--------------------
SQL Text: select from test where n=1

-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------

1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
  A potentially better execution plan was found for this statement.

  Recommendation (estimated benefit: 83.84%)

------------------------------------------
Consider accepting the recommended


DECLARE
    my_sqlprofile_name VARCHAR2(30);
   BEGIN
    my_sqlprofile_name := DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
       task_name => 'my_sql_tuning_task5',
       name      => 'my_sql_profile3');
   END;
   /

PL/SQL procedure successfully completed.
*/

-- Aceptamos el profile.

DECLARE
    my_sqlprofile_name VARCHAR2(30);
   BEGIN
    my_sqlprofile_name := DBMS_SQLTUNE.ACCEPT_SQL_PROFILE (
       task_name => 'my_sql_tuning_task5',
       name      => 'my_sql_profile3');
   END;
   /

-- Monitorizacion de los profiles.

SQL> SELECT TO_CHAR(SQL_TEXT) FROM DBA_SQL_PROFILES;
/*
TO_CHAR(SQL_TEXT)
------------------------------------------------------------------------
select  * from test where n=1
*/

-- Borramos el profile

BEGIN
  DBMS_SQLTUNE.DROP_SQL_PROFILE ( 
    name => 'my_sql_profile3' 
);
END;
/

'Nota: Durante una migración seguramente os interese mantener los SQL Profiles generados. <a href="https://mogukiller.wordpress.com/2016/08/25/database-migrate-sql-profiles/">Aqui</a> os indico como'

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: