zoukankan      html  css  js  c++  java
  • sql tuning with sql_id

    Suppose the sql id is – 87s8z2zzpsg88

    1. Create Tuning Task
    DECLARE
    l_sql_tune_task_id VARCHAR2(100);
    BEGIN
    l_sql_tune_task_id := DBMS_SQLTUNE.create_tuning_task (
    sql_id => '87s8z2zzpsg88',
    scope => DBMS_SQLTUNE.scope_comprehensive,
    time_limit => 500,
    task_name => '87s8z2zzpsg88_tuning_task11',
    description => 'Tuning task1 for statement 87s8z2zzpsg88');
    DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id);
    END;
    /
    
    
    2. Execute Tuning task:
    EXEC DBMS_SQLTUNE.execute_tuning_task(task_name => '87s8z2zzpsg88_tuning_task11');
    
    
    3. Get the Tuning advisor report.
    set long 65536
    set longchunksize 65536
    set linesize 100
    select dbms_sqltune.report_tuning_task('87s8z2zzpsg88_tuning_task11') from dual;
    
    

     

    4. Get list of tuning task present in database:

    We can get the list of tuning tasks present in database from DBA_ADVISOR_LOG

    SELECT TASK_NAME, STATUS FROM DBA_ADVISOR_LOG WHERE TASK_NAME ;
    
    
    5. Drop a tuning task:
    execute dbms_sqltune.drop_tuning_task('87s8z2zzpsg88_tuning_task11');
    

     

    What if the sql_id is not present in the cursor , but present in AWR snap?

    SQL_ID =24pzs2d6a6b13

    First we need to find the begin snap and end snap of the sql_id.

    select a.instance_number inst_id, a.snap_id,a.plan_hash_value, to_char(begin_interval_time,'dd-mon-yy hh24:mi') btime, abs(extract(minute from (end_interval_time-begin_interval_time)) + extract(hour from (end_interval_time-begin_interval_time))*60 + extract(day from (end_interval_time-begin_interval_time))*24*60) minutes,
    executions_delta executions, round(ELAPSED_TIME_delta/1000000/greatest(executions_delta,1),4) "avg duration (sec)" from dba_hist_SQLSTAT a, dba_hist_snapshot b
    where sql_id='&sql_id' and a.snap_id=b.snap_id
    and a.instance_number=b.instance_number
    order by snap_id desc, a.instance_number;
    

    From here we can get the begin snap and end snap of the sql_id.

    begin_snap -> 235
    end_snap -> 240

    1. Create the tuning task:

    DECLARE
      l_sql_tune_task_id  VARCHAR2(100);
    BEGIN
      l_sql_tune_task_id := DBMS_SQLTUNE.create_tuning_task (
                              begin_snap  => 235,
                              end_snap    => 240,
                              sql_id      => '24pzs2d6a6b13',
                              scope       => DBMS_SQLTUNE.scope_comprehensive,
                              time_limit  => 60,
                              task_name   => '24pzs2d6a6b13_AWR_tuning_task',
                              description => 'Tuning task for statement 24pzs2d6a6b13  in AWR');
      DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id);
    END;
    /
    

    2. Execute the tuning task:

    EXEC DBMS_SQLTUNE.execute_tuning_task(task_name => '24pzs2d6a6b13_AWR_tuning_task');
    
    

    3. Get the tuning task recommendation report

    SET LONG 10000000;
    SET PAGESIZE 100000000
    
    SET LINESIZE 200
    SELECT DBMS_SQLTUNE.report_tuning_task('24pzs2d6a6b13_AWR_tuning_task') AS recommendations FROM dual;
    SET PAGESIZE 24
    
    

    SEE ALSO – COLLECTION OF USEFUL DATABASE MONITORING SCRIPT

  • 相关阅读:
    mac的webdriver自动化
    MongoDB win安装后无法远程连接访问
    Fiddler的一些坑: !SecureClientPipeDirect failed: System.IO.IOException
    Mac终端用Sublime打开指定文件或文件夹
    [Spring常见问题]java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    Flask_Flask-Mail邮件扩展(十三)
    Flask_Flask-Migrate数据迁移扩展(十二)
    Flask + flask_sqlalchemy + jq 完成书籍展示、新增、删除功能
    Flask_CSRF保护(十一)
    SQLAlchemy(十)
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/15596395.html
Copyright © 2011-2022 走看看