Sql Tuning Advisor是10g以后出现的一个十分有用的调优工具,大多数情况下我们可以通过dbconsole或者Grid Control的web界面调用SQL Advisor;但如果系统中没有配置dbconsole或者Grid Control的话,我们则需要通过手动调用DBMS_SQLTUNE PL/SQL程序包来使用该特性。这里我列出一个针对单个SQL语句Autotune的脚本,具体脚本:

beginDBMS_SQLTUNE.drop_tuning_task('&task_name');
end;
/DECLAREmy_task_name VARCHAR2(30);my_sqltext CLOB;my_sqlid varchar2(30);
BEGINmy_sqlid := '&sqlid';my_task_name := dbms_sqltune.create_tuning_task(sql_id => my_sqlid,scope => 'COMPREHENSIVE',time_limit => 300,task_name => '&task_name',description => 'comment');
END;
/BEGINdbms_sqltune.execute_tuning_task(task_name => '&task_name');
END;
/SELECT status FROM USER_ADVISOR_TASKS WHERE task_name = '&task_name';SET LONG 10000
SET LONGCHUNKSIZE 10000
SET LINESIZE 100
set pages 60SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('&task_name') FROM DUAL;

具体使用示例:


SQL> beginDBMS_SQLTUNE.drop_tuning_task('&task_name');
end;
/
Enter value for task_name: newtask
old   3:   DBMS_SQLTUNE.drop_tuning_task('&task_name');
new   3:   DBMS_SQLTUNE.drop_tuning_task('newtask');
begin
*
ERROR at line 1:
ORA-13605: The specified task or object newtask does not exist for the current
user.
ORA-06512: at "SYS.PRVT_ADVISOR", line 2307
ORA-06512: at "SYS.DBMS_ADVISOR", line 172
ORA-06512: at "SYS.DBMS_SQLTUNE", line 751
ORA-06512: at line 3SQL> DECLAREmy_task_name VARCHAR2(30);my_sqltext CLOB;my_sqlid varchar2(30);
BEGINmy_sqlid := '&sqlid';my_task_name := dbms_sqltune.create_tuning_task(sql_id => my_sqlid,scope => 'COMPREHENSIVE',time_limit => 300,task_name => '&task_name',description => 'comment');
END;
/
Enter value for sqlid: 17usubxchdf2w
old  11:   my_sqlid := '&sqlid';
new  11:   my_sqlid := '17usubxchdf2w';
Enter value for task_name: new_task
old  19:                           task_name => '&task_name',
new  19:                           task_name => 'new_task',SQL> BEGINdbms_sqltune.execute_tuning_task(task_name => '&task_name');
END;
/
Enter value for task_name: new_task
old   3:   dbms_sqltune.execute_tuning_task(task_name => '&task_name');
new   3:   dbms_sqltune.execute_tuning_task(task_name => 'new_task');PL/SQL procedure successfully completed.SQL> SELECT status FROM USER_ADVISOR_TASKS WHERE task_name = '&task_name';
Enter value for task_name: new_task
old   1: SELECT status FROM USER_ADVISOR_TASKS WHERE task_name = '&task_name'
new   1: SELECT status FROM USER_ADVISOR_TASKS WHERE task_name = 'new_task'STATUS
-----------
COMPLETEDSQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('&task_name') FROM DUAL;
Enter value for task_name: new_task
old   1: SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('&task_name') FROM DUAL
new   1: SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('new_task') FROM DUALDBMS_SQLTUNE.REPORT_TUNING_TASK('NEW_TASK')
----------------------------------------------------------------------------------------------------
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name   : new_task
Tuning Task Owner  : SYS
Workload Type      : Single SQL Statement
Scope          : COMPREHENSIVE
Time Limit(seconds): 300
Completion Status  : COMPLETED
Started at     : 03/25/2011 00:14:41
Completed at       : 03/25/2011 00:14:45-------------------------------------------------------------------------------
Schema Name: SYS
SQL ID     : 17usubxchdf2w
SQL Text   : select count(t1) from hashtab-------------------------------------------------------------------------------
FINDINGS SECTION (1 finding)
-------------------------------------------------------------------------------1- Statistics Finding
---------------------Table "SYS"."HASHTAB" was not analyzed.Recommendation--------------- Consider collecting optimizer statistics for this table.execute dbms_stats.gather_table_stats(ownname => 'SYS', tabname =>'HASHTAB', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,method_opt => 'FOR ALL COLUMNS SIZE AUTO');Rationale---------The optimizer requires up-to-date statistics for the table in order toselect a good execution plan.-------------------------------------------------------------------------------
EXPLAIN PLANS SECTION
-------------------------------------------------------------------------------1- Original
-----------
Plan hash value: 485915006------------------------------------------------------------------------------
| Id  | Operation      | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |         |     1 |    13 |     2   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE    |         |     1 |    13 |        |      |
|   2 |   TABLE ACCESS FULL| HASHTAB |   102 |  1326 |     2   (0)| 00:00:01 |
------------------------------------------------------------------------------

转载于:https://blog.51cto.com/maclean/1277736

Utilize Sql Tuning Advisor from Script相关推荐

  1. Oracle SQL Tuning Advisor 测试

    如果面对一个需要优化的SQL语句,没有很好的想法,可以先试试Oracle的SQL Tuning Advisor. SQL> select * from v$version;BANNER ---- ...

  2. SQL Tuning Advisor简单使用

    SQL Tuning Advision是Oracle提供的一个功能包,可以针对有性能问题的SQL给出优化建议.可以作为调优的辅助手段. 建立测试表和索引 create table t_1 as sel ...

  3. SQL Tuning Advisor使用实例

    在oracle10g之前,想要优化一个sql语句是比较麻烦,但是在oracle10g这个版本推出的SQL Tuning Advisor这个工具,能大大减少sql调优的工作量,不过要想使用SQL Tun ...

  4. How to use STA(sql tuning advisor)

    一.手工生成Sql tuning advisor  1.SQL text format: DECLARE   my_task_name VARCHAR2(30);   my_sqltext   CLO ...

  5. SQL Tuning Advisor 使用11G的自动调优建议

    先给监控用户授权  grant advisor to  DBA_MONITER; 可以在PL/SQL DEVELOPER 命令窗口执行 SQL_ID方式 DECLARE my_task_name VA ...

  6. 深入了解SQL Tuning Advisor

    1.前言:一直以来SQL调优都是DBA比较费力的技术活,而且很多DBA如果没有从事过开发的工作,那么调优更是一项头疼的工作,即使是SQL调优很厉害的高手,在SQL调优的过程中也要不停的分析执行计划.加 ...

  7. mysql sql tuning_使用SQL tuning advisor(STA)自动优化SQL

    Oracle 10g之后的优化器支持两种模式,一个是normal模式,一个是tuning模式.在大多数情况下,优化器处于normal模式.基于CBO的n Oracle 10g之后的优化器支持两种模式, ...

  8. sql tuning advisor

    [terry笔记]Oracle SQL 优化之sql tuning advisor (STA) 前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰 ...

  9. ORACLE SQL Tuning Advisor

    前言:一直以来SQL调优都是DBA比较费力的技术活,而且很多DBA如果没有从事过开发的工作,那么调优更是一项头疼的工作,即使是SQL调优很厉害的高手,在SQL调优的过程中也要不停的分析执行计划.加HI ...

最新文章

  1. 记忆模糊、记忆泛化的关键分子开关被发现
  2. Echarts图表在VUE项目中使用动态数据源
  3. 蜗壳の樱花2020-04-03
  4. (笔试题)和一半的组合数
  5. 父母延长退休,作为程序员的我光荣失业
  6. 报错A Database Error Occurred,linux系统被cc***
  7. 【线段树】 SPOJ 2713 Can you answer these queries IV
  8. HTML+CSS实现小米账号注册界面
  9. ITSS服务管理体系建立流程(四个阶段)附:广东软件行业协会ITSS评估
  10. 进阶的阿牛哥之如何存储每日数据到csv或txt文件(如何实现换行)
  11. unity+google cardboard
  12. 快速gcd vs 普通gcd
  13. 去哪儿网2015校园招聘前端笔试题
  14. IntelliJ IDEA 14注册码
  15. GitHub各种加速方式
  16. 外卖餐饮管理系统开发源码
  17. 动手学深度学习实现DAY-2
  18. android 按钮回弹效果,Android仿IOS回弹效果 支持任何控件
  19. Unity 手游性能优化
  20. 使用kon-boot的U盘启动盘绕过系统登录密码

热门文章

  1. Java项目:健身俱乐部管理系统(java+SSM+Mysql+Jsp)
  2. 【工具软件】webstorm的实用快捷操作(持续积累)
  3. 【java】兴唐第十五节课
  4. CSS之布局(外边距的折叠)
  5. c语言如何输出整串链表,大神帮我看一下怎么输入输出一个链表,我输入了但是没输出啊...
  6. python银行家算法代码_避免死锁的银行家算法C++程序实现
  7. Swift中NSRange和Range的转换
  8. 方法 retrun 异步的值,创建一个变量直接等于一个异步方法返回的值
  9. 后端返回的数据中换行符 html换行
  10. 【UIDynamic例子】挂起的方块