根据上一篇文章中生产的SPA任务,通过DBMS_SQLTUNE提出的建议优化sql

一. dbms_sqltune.create_tuning_task可以基于sql text,sql_id, workload repository,sqlset,SPA Task。本处以前面实验用的SPA Task为例。
--根据spa task_name创建任务(通过其他方式创建任务理应更简单)
DECLARE
  L_SQL_TUNE_TASK_ID VARCHAR2(100);
BEGIN
  L_SQL_TUNE_TASK_ID := DBMS_SQLTUNE.CREATE_TUNING_TASK(SPA_TASK_NAME    => 'compare_2sets2',
                                                        SPA_TASK_OWNER   => 'HNYD',
                                                        SPA_COMPARE_EXEC => NULL,
                                                        BASIC_FILTER     => NULL,
                                                        TIME_LIMIT       => 18000,
                                                        TASK_NAME        => 'T_SPA_TASK1',
                                                        DESCRIPTION      => 'Test create_tuning_task - SPA Task format');
  DBMS_OUTPUT.PUT_LINE('l_sql_tune_task_id: ' || L_SQL_TUNE_TASK_ID);
END;
/
----上面发现DJANGO_SET1,DJANGO_SET2以及compare_2sests不存在,这与个人清理掉system和sysaux表空间的操作有关,用上篇中类似方式重新创建即哥。
---而后发现超时(执行上面的过程不会报错,最后sqltune的结果展示不全,内容显示错误),因为整个sql tune sets 内容太多,我第一次超时时间只设置了3分钟,后面重新设置较长时间后成功获取整个spa任务比较中所有sql。
2.DBMS_SQLTUNE常见利用
    begin DBMS_SQLTUNE.execute_tuning_task(task_name => 'T_SPA_TASK1'); end;
 SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('T_SPA_TASK1')  FROM dual;
--结果展示
 GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name                  : T_SPA_TASK1
Tuning Task Owner                 : HNYD
Workload Type                     : SQL Tuning Set
Scope                             : COMPREHENSIVE
Time Limit(seconds)               : 18000
Completion Status                 : COMPLETED
Started at                        : 03/05/2016 22:41:51
Completed at                      : 03/05/2016 23:15:21
SQL Tuning Set (STS) Name         : DJANGO_SET3
SQL Tuning Set Owner              : HNYD
Number of Statements in the STS   : 604

-------------------------------------------------------------------------------
SUMMARY SECTION
-------------------------------------------------------------------------------
                      Global SQL Tuning Result Statistics
-------------------------------------------------------------------------------
Number of SQLs Analyzed                      : 232
Number of SQLs in the Report                 : 138
Number of SQLs with Findings                 : 79
Number of SQLs with Statistic Findings       : 1
Number of SQLs with Alternative Plan Findings: 29
Number of SQLs with SQL profiles recommended : 30
Number of SQLs with Index Findings           : 1
Number of SQLs with SQL Restructure Findings : 14
Number of SQLs with Errors                   : 59

-------------------------------------------------------------------------------
    SQLs with Findings Ordered by Maximum (Profile/Index) Benefit, Object ID
-------------------------------------------------------------------------------
object ID  SQL ID        statistics profile(benefit) index(benefit) restructure
---------- ------------- ---------- ---------------- -------------- -----------
       155 3gjhh2hgfnnb2                      99.94%                           
       176 24bu9cpx0wmxq                      99.94%                           
        68 bn4b3vjw2mj3u                      99.62%                           
        30 g5m0bnvyy37b1                      99.52%                          1
        60 7aw21806wpgzp                      99.50%                          1
       138 a7a75aupxfgq1                      96.63%                           
        13 0mdckw03m07v3                                     95.00%            
       163 3nc51h4uv661j                      89.40%                           
        20 g5m0bnvyy37b1                      89.37%                          1
        45 aamdkbbaajjgz                      84.03%                           
       203 1tgukkrqj3zhw                      82.42%                           
        15 f5yun5dynkskv                      81.85%                           
        99 22yqbyxqx2fd6                      81.62%                           
......
对很多sql都给了建议,结果过长,贴一小部分。
-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------

1- SQL Profile Finding (see explain plans section below)
--------------------------------------------------------
  为此语句找到了性能更好的执行计划。

Recommendation (estimated benefit: 99.62%)
  ------------------------------------------
  - 考虑接受推荐的 SQL 概要文件。
    execute dbms_sqltune.accept_sql_profile(task_name => 'T_SPA_TASK1',
            object_id => 68, task_owner => 'HNYD', replace => TRUE);

2- Alternative Plan Finding
---------------------------
  通过搜索系统的实时和历史性能数据找到了此语句的某些替代执行计划。

The following table lists these plans ranked by their average elapsed time.
  See section "ALTERNATIVE PLANS SECTION" for detailed information on each
  plan.

id plan hash  last seen            elapsed (s)  origin          note            
  -- ---------- -------------------- ------------ --------------- ----------------
   1 1781002567  2016-03-05/18:25:58        0.006 AWR                             
   2 2672219561              unknown        0.011 SPA             original plan   
   3  930046576  2016-03-01/17:00:34        0.016 AWR                             
   4 3270362138  2016-03-05/18:25:58        0.043 AWR

Recommendation
  --------------
  - 请考虑使用最佳平均用时为计划创建 SQL 计划基线。
    execute dbms_sqltune.create_sql_plan_baseline(task_name => 'T_SPA_TASK1',
            object_id => 68, owner_name => 'HNYD', plan_hash_value =>
            1781002567);

-------------------------------------------------------------------------------
ADDITIONAL INFORMATION SECTION
-------------------------------------------------------------------------------
- 此 SQL 语句至少缺少一个重要绑定值。指导分析的准确性可能取决于提供的所有重要绑定值。

-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------

1- Original With Adjusted Cost
------------------------------
Plan hash value: 2672219561

-----------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                              | Name                       | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                       |                            | 90001 |    13M|       |  3124   (1)| 00:00:38 |
|   1 |  SORT ORDER BY                         |                            | 90001 |    13M|    16M|  3124   (1)| 00:00:38 |
|*  2 |   FILTER                               |                            |       |       |       |            |          |
……

二、由于分析整个任务中的所有sql太耗时,且spa任务用到的sql tune sets也没有过滤,针对性不强,下面以一个sql为例,同样是DBMS_SQLTUNE With SQL Performance Analyzer
-- --过滤条件BASIC_FILTER     => 'sql_id=''67255mtgs6xv4''',TASK_NAME        => 'T_SPA_TASK_ONESQL',实用性相对上面较强 DECLARE
  L_SQL_TUNE_TASK_ID VARCHAR2(100);
BEGIN
  L_SQL_TUNE_TASK_ID := DBMS_SQLTUNE.CREATE_TUNING_TASK(SPA_TASK_NAME    => 'compare_2sets2',
                                                        SPA_TASK_OWNER   => 'HNYD',
                                                        SPA_COMPARE_EXEC => NULL,
                                                        BASIC_FILTER     => 'sql_id=''67255mtgs6xv4''',
                                                        TIME_LIMIT       => 1800,
                                                        TASK_NAME        => 'T_SPA_TASK_ONESQL',
                                                        DESCRIPTION      => 'Test create_tuning_task - SPA Task format');
  DBMS_OUTPUT.PUT_LINE('l_sql_tune_task_id: ' || L_SQL_TUNE_TASK_ID);
END;
/

begin DBMS_SQLTUNE.execute_tuning_task(task_name => 'T_SPA_TASK_ONESQL',execution_name => 'exec_onesql'); end;

SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('T_SPA_TASK_ONESQL')  FROM dual;

结果展示:

GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name                  : T_SPA_TASK_ONESQL
Tuning Task Owner                 : HNYD
Workload Type                     : SQL Tuning Set
Scope                             : COMPREHENSIVE
Time Limit(seconds)               : 1800
Completion Status                 : COMPLETED
Started at                        : 03/05/2016 23:32:23
Completed at                      : 03/05/2016 23:32:29
SQL Tuning Set (STS) Name         : DJANGO_SET3
SQL Tuning Set Owner              : HNYD
Number of Statements in the STS   : 604

-------------------------------------------------------------------------------
SUMMARY SECTION
-------------------------------------------------------------------------------
                      Global SQL Tuning Result Statistics
-------------------------------------------------------------------------------
Number of SQLs Analyzed                      : 2
Number of SQLs in the Report                 : 1
Number of SQLs with Findings                 : 1
Number of SQLs with Statistic Findings       : 1
Number of SQLs with Alternative Plan Findings: 1

-------------------------------------------------------------------------------
    SQLs with Findings Ordered by Maximum (Profile/Index) Benefit, Object ID
-------------------------------------------------------------------------------
object ID  SQL ID        statistics profile(benefit) index(benefit) restructure
---------- ------------- ---------- ---------------- -------------- -----------
         2 67255mtgs6xv4          1                                            
         3 67255mtgs6xv4          1                
……
------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------

1- Statistics Finding
---------------------
  表 "HNYD"."DB_GROUP_SCHEDULERS" 的优化程序统计信息已失效。

Recommendation
  --------------
  - 考虑收集此表及其索引的优化程序统计信息。
    execute dbms_stats.gather_table_stats(ownname => 'HNYD', tabname =>
            '表名保密..', estimate_percent =>
            DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE
            AUTO', cascade => TRUE);

Rationale
  ---------
    为了选择好的执行计划, 优化程序需要此表及其索引的最新统计信息。

2- Alternative Plan Finding
---------------------------
  通过搜索系统的实时和历史性能数据找到了此语句的某些替代执行计划。

The following table lists these plans ranked by their average elapsed time.
  See section "ALTERNATIVE PLANS SECTION" for detailed information on each
  plan.

id plan hash  last seen            elapsed (s)  origin          note            
  -- ---------- -------------------- ------------ --------------- ----------------
   1  838008028              unknown        0.022 SPA                             
   2  776620345  2016-03-05/20:00:11        0.061 AWR             original plan

Recommendation
  --------------
  - 请考虑使用最佳平均用时为计划创建 SQL 计划基线。
    execute dbms_sqltune.create_sql_plan_baseline(task_name =>
            'T_SPA_TASK_ONESQL', object_id => 2, owner_name => 'HNYD',
            plan_hash_value => 838008028);

-------------------------------------------------------------------------------
ADDITIONAL INFORMATION SECTION
-------------------------------------------------------------------------------
- 优化程序不能合并位于执行计划的行 ID 12 处的视图。. 优化程序不能合并包含 "ORDER BY" 子句的视图, 除非此语句为 "DELETE"
  或 "UPDATE", 并且父查询为此语句中的顶级查询。.
- 优化程序不能合并位于执行计划的行 ID 5 处的视图。. 优化程序不能合并包含 "ORDER BY" 子句的视图, 除非此语句为 "DELETE" 或
  "UPDATE", 并且父查询为此语句中的顶级查询。.
- 优化程序不能合并位于执行计划的行 ID 2 处的视图。. 优化程序不能合并包含 "ROWNUM" 伪列的视图。.


结果后面列出了各个计划及按推荐方式处理的变化方式。可做性能优化参考。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27349469/viewspace-2048767/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27349469/viewspace-2048767/

DBMS_SQLTUNE + SQL Performance Analyzer 实战小记相关推荐

  1. SQL Performance Analyzer SPA常用脚本汇总

    SPA常用脚本汇总 附件为 一个SPA报告 spa_buffergets_summary SQL 性能分析器 SQL Performance Analyzer SPA Oracle Database ...

  2. 【SQL Performance】历史SQL监控(Historical SQL Monitoring ) 功能(12c)

    概述 历史SQL监控使用的例子 关于Automatic Report Capturing 相关视图和程序包 相关参数 参考 概述 Oracle 11g版本 推出了实时SQL监控功能(Real-Time ...

  3. 工作经常使用的SQL整理,实战篇(一)

    工作经常使用的SQL整理,实战篇(一) 原文:工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实 ...

  4. Intel.VTune.Performance.Analyzer.v8.0.014 分析软件

    为什么80%的码农都做不了架构师?>>>    Intel.VTune.Performance.Analyzer.v8.0.014 分析软件 Introduction_to_Ther ...

  5. MySQL调优篇 | SQL调优实战(5)完结篇

    [前言] 经常有一些朋友向我咨询,如何写出高效的SQL,这不是三言两语能说得清的,索性认真来写一下,增删查改方面的知识我不再赘述,如果有基础薄弱的同学,可以好好的补一补再来看. 以MySQL为基础,M ...

  6. Flink 最锋利的武器:Flink SQL 入门和实战

    学习路径:<2021年最新从零到大数据专家学习路径指南> 面      试:<2021年最新版大数据面试题全面开启更新> [注意]:Flink1.9版本后的Flink SQL使 ...

  7. Flink最锋利的武器:Flink SQL入门和实战 | 附完整实现代码

    作者 | 机智的王知无 转载自大数据技术与架构(ID: import_bigdata) 一.Flink SQL 背景 Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门 ...

  8. Spark SQL之案例实战(四)

    1. 获取数据 本文通过将github上的Spark项目Git日志作为数据,对SparkSQL的内容进行详细介绍 数据获取命令如下: [root@master spark]# git log --pr ...

  9. Flink 最锋利的武器:Flink SQL 入门和实战带你了解NBA球星数据

    一.Flink SQL 背景 Flink SQL 是 Flink 实时计算为简化计算模型,降低用户使用实时计算门槛而设计的一套符合标准 SQL 语义的开发语言. 自 2015 年开始,阿里巴巴开始调研 ...

  10. PHP与SQL注入***(实战篇五)

    SQL注入***是******网站最常用的手段.如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入***.SQL注入***通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据 ...

最新文章

  1. Vue.js双向绑定的实现原理
  2. gtk移植到嵌入式_入行嵌入式研发10多年,一位工程师悟出了这些道理
  3. 关于epoll 水平触发在udp套接字上不生效问题的原因
  4. 为何要把你的SAP运行在Oracle数据库上?
  5. hihocoder Tower Defense Game(树上贪心)
  6. 裤子换裙子,就问你GAN的这波操作秀不秀
  7. 【读书笔记0102】Beginning linux programming-3rd
  8. 浅谈Spring测试框架+junit4单元测试原理
  9. 视频PPT互动问答丨数据库智能运维专题
  10. cvpr2020 人脸检测与识别_CVPR 2020 | 元学习人脸识别框架详解
  11. java socket 消息中转,Java中Socket实现消息传输(传输原型)
  12. b站全站排行刷新去掉观看
  13. python中的exec()函数和eval()函数
  14. keras模型训练参数
  15. 002 离散时间傅里叶分析
  16. android极光推送问题,极光推送- 常见问题 - 极光文档
  17. win10系统从旧固态迁移到新固态,win10系统迁移到固态硬盘ssd
  18. Intel CPU的型号漫谈
  19. 练习:编写程序判断当前系统状态
  20. 使用普通打印机打印条码标签

热门文章

  1. python 培训 邹博
  2. A4排成A3双面打印怎么操作
  3. 用python计算工程量_基于Python脚本程序的电缆工程量快速统计方法与流程
  4. java安装包_java JDK安装包的获取与安装
  5. 用LM方法的matlab求解,matlab中LM算法
  6. python 安装win32com_python调用win32com.client时提示:No module named win32com.client
  7. 从完美KL距离推导VAE
  8. 工程图样中粗实线的用途,识图复习
  9. Axure RP9授权码(亲测有效)
  10. npm 下载为什么很慢?解决方案来了