• 11g新特性-自动sql调优(Automatic SQL Tuning)


    11g新特性-自动sql调优(Automatic SQL Tuning)

    在Oracle 10g中,引进了自动sql调优特性。此外,ADDM也会监控捕获高负载的sql语句。

    在Oracle 11g中,通过运行sql tuning advisor加强了自动sql调优功能。默认情况下是每天夜间通过自动任务的方式运行”自动sql调优“。

    自动sql调优的过程:

    1.识别需要调优的sql语句  根据AWR中的CPU和I/O负载来识别

    2.调优,生成新的sql profile  

      在维护窗口(maintenance window),自动sql调优任务运行时,上一步识别出的sql语句会被“sql tuning advisor”调优。并产生相应的sql profiles。如果发现有统计信息丢失或过期,会通知GATHER_STATS_JOB

    3.测试新的sql profile  benefit%=(time_old – time_new)/(time_old)

    4.执行符合标准的新的sql profile  

      可以查看dba_sql_profiles,有哪些sql profiles是被数据库自动执行的(type 列)

    5.DBA可以产生自动sql调优活动的报告。可以确认产生的sql profile是否有效、删除新产生的sql profile等。

    自动sql调优不会进行调优的sql:

    -Ad hoc语句和很少重复执行的sql

    -并行查询

    -长时间运行的查询。对于长时间运行的sql,如果使用产生的sql profile进行测试,还是会需要长时间运行,就会忽略这样的sql。如果使用新产生的sql profile会显著减少时间,就不会忽略这类长时间运行的sql。

    -递归sql

    -DDL语句

    -使用了insert、delete的DML语句 上面的语句,可以手动使用SQL Tuning Advisor进行调优。

    上面的语句,可以手动使用SQL Tuning Advisor进行调优。

    配置自动sql调优

    使用dbms_sqltune包进行配置。 在maintenance window,自动sql调优特性会启动一个job(sys_auto_sql_tuning_task)。产生一个需要调优的sql 列表,然后根据重要性一次进行调优。 一般这个job会运行一小时,可以设置该job设置: dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','TIME_LIMIT',7200);

    复制代码
    begin
        dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','LOCAL_TIME_LIMIT',1400);
        dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','ACCEPT_SQL_PROFILES','TRUE');
        dbms_sqltune.set_tuning_task_parameter('SYS_AUTO_SQL_TUNING_TASK','MAX_SQL_PROFILES_PER_EXEC',50);
        dbms_sqltune.set_tuning_task_parameter('SSY_AUTO_SQL_TUNING_TASK','MAX_AUTO_SQL_PROFILES',10002);
    end;
    复制代码

     管理自动sql调优任务

    1.开启自动sql调优

    复制代码
    begin
         dbms_auto_task_admin.enable(
              client_name => 'sql tuning advisor',
              operation => 'NULL',#在所有维护窗口都开启
              window_name => 'NULL');
    end;
    复制代码

    2.关闭自动sql调优

    复制代码
    begin
         dbms_auto_task_admin.disable(
              client_name => 'sql tuning advisor',
              operation => 'NULL',
              window_name => 'NULL');
    end;
    复制代码

    生成文本格式的自动sql调优建议报告:

    复制代码
    SQL> variable my_rept CLOB;
    SQL> begin 
         :my_rept := dbms_sqltune.report_auto_tuning_task(
              begin_exec=>NULL,
              end_exec=>NULL,
              type=>'TEXT',
              level=> 'TYPICAL',
              section=>'ALL',
              object_id=>NULL,
              result_limit=>NULL);
         end;
    SQL> print :my_rept
    复制代码

    相关视图:

    -DBA_ADVISOR_EXECUTIONS
    -DBA_ADVISOR_SQLSTATS
    -DBA_ADVISOR_SQLPLANS  
  • 相关阅读:
    黄聪:C#使用能够foreach对hashtable、List遍历时“集合已修改;可能无法执行枚举操作。”错误
    黄聪:[C#]如何获取变量的名字,不是值,是名称。返回名字的字符串
    黄聪:js 获取浏览器、Body、滚动条、可见区域、页面、边框、窗口高度和宽度值(多浏览器)
    黄聪:WIN7下回收站不小心删除的文件怎么恢复,免费数据恢复软件下载
    黄聪:中国大陆的所有IP段,中国电信所有IP段、中国铁通所有IP段、中国网通所有IP段。
    黄聪:将自己开发的插件发布到WordPress官方插件站(转)
    黄聪:利用iframe实现ajax 跨域通信的解决方案(转)
    python 画任意多边形
    python 绘图加上文字
    Python将多张图片进行合并拼接
  • 原文地址:https://www.cnblogs.com/wangchaoyuana/p/7532070.html
Copyright © 2020-2023  润新知