sql tuning advisor:
创建任务
DECLARE

  1. my_task_name VARCHAR2(30);
  2. my_sqltext CLOB;
  3. BEGIN
  4. my_sqltext := 'SELECT /*+ ORDERED */ * ' ||
  5. 'FROM employees e, locations l, departments d ' ||
  6. 'WHERE e.department_id = d.department_id AND ' ||
  7. 'l.location_id = d.location_id AND ' ||
  8. 'e.employee_id < :bnd';
  9.  
  10. my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
  11. sql_text => my_sqltext,
  12. bind_list => sql_binds(anydata.ConvertNumber(100)),
  13. user_name => 'HR',
  14. scope => 'COMPREHENSIVE',
  15. time_limit => 60,
  16. task_name => 'my_sql_tuning_task',
  17. description => 'Task to tune a query on a specified employee');
  18. END;
  19. /

运行任务

  1. BEGIN
  2. DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => 'my_sql_tuning_task' );
  3. END;
  4. /

查看状态和查看结果

  1. SELECT status
  2. FROM USER_ADVISOR_TASKS
  3. WHERE task_name = 'my_sql_tuning_task';
  1. SET LONG 1000
  2. SET LONGCHUNKSIZE 1000
  3. SET LINESIZE 100
  4. SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK( 'my_sql_tuning_task')
  5. FROM DUAL;

如想针对sql_id做调优,create task时使用如下语法:

  1. DBMS_SQLTUNE.CREATE_TUNING_TASK(
  2. sql_id IN VARCHAR2,
  3. plan_hash_value IN NUMBER := NULL,
  4. scope IN VARCHAR2 := SCOPE_COMPREHENSIVE,
  5. time_limit IN NUMBER := TIME_LIMIT_DEFAULT,
  6. task_name IN VARCHAR2 := NULL,
  7. description IN VARCHAR2 := NULL)
  8. RETURN VARCHAR2;

下面举例一个:
1、为SQL_id创建一个STA(SQL Tuning advisor)分析任务(使用SYS用户执行)
SQL> variable task_li_test varchar2(2000);
SQL>exec :task_li_test:=dbms_sqltune.create_tuning_task(sql_id=>'xxxxxxxxxxx',time_limit=>600,task_name=>'li_sql_1');
 
2、执行上面创建的STA(需要一定的时间)
SQL> exec dbms_sqltune.execute_tuning_task(task_name=>'li_sql_1');
 
3、查询优化任务创建与执行的情况
select a.owner,b.task_id,b.task_name,a.created from dba_advisor_tasks a,dba_advisor_log b where a.task_id=b.task_id and a.task_name='li_sql_1';

4、查看任务优化报告(优化的详细内容)
SQL>select dbms_sqltune.report_tuning_task('li_sql_1') from dual;
 
5、接受建议的 SQL 概要文件,即创建SQL_Profle
SQL> execute dbms_sqltune.accept_sql_profile(task_name => 'li_sql_1',task_owner =>'SYS', replace => TRUE);
 
6、查看第5步创建起来的SQL_Profile信息
SQL>select a.name,a.task_id,a.created from dba_sql_profiles a,dba_advisor_log b where a.task_id=b.task_id and b.task_name='li_sql_1'
NAME
TASK_ID
 CREATED
SYS_SQLPROF_01411bdf99410002
106699
    14-9月 -13 05.49.00.000000 下午
 
7、再次执行SQLID为‘xxxxxxxxxxx’的语句
7.1、执行时间由原来的6分钟降为3秒
7.2、查看执行计划,执行计划中包含下面信息,说明是使用了创建的SQL_Profile所起到的效果
  - SQL profile SYS_SQLPROF_01411bdf99410002used for this statement
 
8、删除SQL_Profile
SQL>exec dbms_sqltune.drop_sql_profile(name =>'SYS_SQLPROF_01411bdf99410002');
 
9、删除优化任务
SQL> exec dbms_sqltune.drop_tuning_task(task_name => 'li_sql_1');

手工执行sql tuning advisor和sql access advisor的更多相关文章

  1. SQL Tuning 基础概述09 - SQL Access Advisor

    Oracle官方文档对SQL Access Advisor的描述如下: SQL Access Advisor, which is a tuning tool that provides advice ...

  2. Oracle调整顾问(SQL Tuning Advisor 与 SQL Access Advisor

    在Oracle数据库出现性能问题时,使用Oracle本身的工具包,给出合理的调优建议是比较省力的做法. tuning advisor 是对输入的sql set的执行计划进行优化accsee advis ...

  3. 怎样使用oracle 的DBMS_SQLTUNE package 来执行 Sql Tuning Advisor 进行sql 自己主动调优

     怎样使用oracle 的DBMS_SQLTUNE package 来执行 Sql Tuning Advisor 进行sql 自己主动调优 1>.这里简单举个样例来说明DBMS_SQLTUN ...

  4. 深入了解SQL Tuning Advisor(转载)

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

  5. SQL Tuning 基础概述08 - SQL Tuning Advisor

    SQL调优顾问 SQL Tuning Advisor的使用案例: 1.构建测试表T 2.定义调整任务 3.修改调整任务参数 4.执行调整任务 5.监控调整任务 6.查看调整任务建议 7.删除调整任务 ...

  6. 【转】使用SQL Tuning Advisor STA优化SQL

    SQL优化器(SQL Tuning Advisor STA)是Oracle10g中推出的帮助DBA优化工具,它的特点是简单.智能,DBA值需要调用函数就可以给出一个性能很差的语句的优化结果.下面介绍一 ...

  7. 如何用 SQL Tuning Advisor (STA) 优化SQL语句

    在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等.在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning ...

  8. ORACLE SQL TUNING ADVISOR 使用方法

    sql tunning advisor 使用的主要步骤: 1 建立tunning task 2 执行task 3 显示tunning 结果 4 根据建议来运行相应的调优方法  下面来按照这个顺序来实施 ...

  9. Oracle 10G强大的SQL优化工具:SQL Tuning Advisor

    p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; orphans: 2; widow ...

随机推荐

  1. android volley 发送 POST 请求

    Map<String, String> params = new HashMap<String, String>(); params.put("fromUser&qu ...

  2. orcale 之 SQL 数据查询

    从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列.虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下: SELECT select_list [ INTO new_tab ...

  3. sqlite3使用

    sqlite3使用 sqlite可以在https://www.sqlite.org/网站上下载.支持Linux, MacOS, Windows等各种操作系统.下载后不需要安装,解压后就可以使用,追加路 ...

  4. log4j DailyRollingFileAppender, DatePattern 配置

    在DailyRollingFileAppender中可以指定monthly(每月). weekly(每周).daily(每天).half-daily(每半天).hourly(每小时)和minutely ...

  5. Azure SQL Federation(联合)

    说Federation(联合)之前,先说下,表的垂直分割 和 水平分割----------------------------------------------------------------- ...

  6. Java入门系列-20-异常

    为什么要进行异常处理 下面这段代码能否正常执行 public class DemoCalc { public static void main(String[] args) { int a=0; in ...

  7. 【eclipse安装黑色主题】

    eclipse Luna Service Release 2 (4.4.2)版本的自带了黑色的主题,切换下即可: 切换主题以后还需要修改下字体的主题: http://www.eclipsecolort ...

  8. Lucence学习之一:全文检索的基本原理

    本文转载自:  http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623594.html 一.总论 根据http://lucene.ap ...

  9. mongodb操作之mongoose

    /** * Created by chaozhou on 2015/10/6. */ var mongoose = require("mongoose"); var db = mo ...

  10. 一:HttpClient知识整理

    一:httpclient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支 ...