DB tuning advisor是创建优化任务,对某些sql数据库进行分析,并尽量给出优化建议的一个强大的数据库工具。

自己平时几乎没用过这玩意,所以来测一测用法,其实对于一些sql一筹莫展的时候跑跑这个,看看数据库的建议也是一个突破点。

一般利用database tuning advisor的顺序:

  1. 找出要去优化调整的sql_id,创建优化任务

Login as SYSTEM (or any other user) at sqlplus and create the tuning task:

SET SERVEROUTPUT ON

declare

stmt_task VARCHAR2(40);

begin

stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'gf27vxf3rz2x7',time_limit=>600);

DBMS_OUTPUT.put_line('task_id: ' || stmt_task );

end;

/

task_id: TASK_43083

注:time_limit以秒为单位,就是这个优化任务最多跑多久,最大3600S,但一般都很快可以跑完,当然在跑这个优化任务的时候,数据库会去模拟执行sql或者其中一部分。

当然也可以直接把sql text作为输入

2. Run the SQL TUNING TASK

begin

DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name => 'TASK_43083');

end;

/

3. monitor the processing of the tuning task with the statement

SELECT TASK_NAME, STATUS FROM DBA_ADVISOR_LOG WHERE TASK_NAME = 'TASK_43083';

SELECT status FROM dba_ADVISOR_TASKS WHERE task_name ='TASK_43083';

4. When the task has a status=COMPLETED, then run:

SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('TASK_43083') AS recommendations FROM dual;

5. Examine the recommendations from Oracle, in case you agree, then accept the best SQL profile.

begin

DBMS_SQLTUNE.ACCEPT_SQL_PROFILE(task_name => 'TASK_43083', task_owner => 'SYSTEM', replace => TRUE);

end;

/

6. You can check the database sql profiles with the statement:

select * from dba_sql_profiles;

In case you want to disable an sql profile use the statement:

begin

DBMS_SQLTUNE.ALTER_SQL_PROFILE('SQL_PROFILE','STATUS','DISABLED');

end;

/

========================================================

如下是实际在sqlplus和OEM下的操作:

SQL> SET SERVEROUTPUT ON

SQL> declare

2  stmt_task VARCHAR2(40);

3  begin

stmt_task := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'gf27vxf3rz2x7',time_limit=>600);

DBMS_OUTPUT.put_line('task_id: ' || stmt_task );

end;

/  4    5    6    7

task_id: TASK_43083

PL/SQL procedure successfully completed.

SQL> begin

2  DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name => 'TASK_43083');

3  end;

/  4

PL/SQL procedure successfully completed.

SQL> SELECT status FROM dba_ADVISOR_TASKS WHERE task_name ='TASK_43083';

STATUS

-----------

COMPLETED

SQL> SELECT TASK_NAME, STATUS FROM DBA_ADVISOR_LOG WHERE TASK_NAME = 'TASK_43083';

TASK_NAME                      STATUS

------------------------------ -----------

TASK_43083                     COMPLETED

SQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('TASK_43083') AS recommendations FROM dual;

RECOMMENDATIONS

--------------------------------------------------------------------------------

GENERAL INFORMATION SECTION

----------------------------------------------------

在这里没有recommend推荐,所以没内容

SQL> SELECT * FROM DBA_ADVISOR_TASKS T WHERE TASK_NAME='TASK_43083';

OWNER                  TASK_ID TASK_NAME                      DESCRIPTION                                                                                ADVISOR_NAME                    CREATED   LAST_MODI PARENT_TASK_ID PARENT_RXEC_ID LAST_EXECUTION                 EXECUTION_TYPE                 EXECUTION_TYPE# EXECUTION_DESCRIPTION                                                                                                                                                 EXECUTION EXECUTION STATUS

----------------------------------------------------------------- ------------------------------ --------- --------- -------------- -------------- ------------------------------ ------------------------------ --------------- ---------------------------------------STATUS_MESSAGE

PCT_COMPLETION_TIME PROGRESS_METRIC METRIC_UNITS                                                     ACTIVITY_COUNTER RECOMMENDATION_COUNT

------------------- --------------- ---------------------------------------------------------------- ---------------- --------------------

ERROR_MESSAGE

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------SOURCE                         HOW_CREATED                    READ_ SYSTE ADVISOR_ID    STATUS#

------------------------------ ------------------------------ ----- ----- ---------- ----------

SYS                                 43083 TASK_43083                                                                                                                SQL Tuning Advisor              21-DEC-16 21-DEC-16              0              0 EXEC_43064                     TUNE SQL                                     1    21-DEC-16 21-DEC-16 COMPLETED

0               0                                                                                 0                    0

CMD                            FALSE FALSE          4          3

从这里也可以看到RECOMMENDATION_COUNT为0,说明tuning advisor没啥建议。Task name为TASK_43083,task id为43083.

SQL> SELECT * FROM DBA_SQLTUNE_STATISTICS;

TASK_ID  OBJECT_ID PARSING_SCHEMA_ID MODULE                                                           ACTION                                                     ELAPSED_TIME    CPU_TIME BUFFER_GETS DISK_READS DIRECT_WRITES ROWS_PROCESSED    FETCHES EXECUTIONS END_OF_FETCH_COUNT OPTIMIZER_COST OPTIMIZER_ENV                     COMMAND_TYPE

---------- ---------- ----------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ------------ ---------- ----------- ---------- ------------- -------------- ---------- ---------- ------------------ -------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------

43083          1                   JDBC Thin Client                                                                                                              4.3835E+10 1879546000   143899706  143034103      0       20730472      20732          4                  4         657055 E289FB89E426A8004E011000AEF5C3E2CFFA331056414551519521105555551545545558591555449665851D5511058555555155515122555415A0EA0C55514542654554544490A1566E021696C6A75545150502541552441615579110A8456E820A5000030020000000000100001000000002002080007D000000000032000          3

SQL> SELECT * FROM DBA_SQLTUNE_BINDS;

no rows selected

SQL> SELECT * FROM DBA_SQLTUNE_PLANS WHERE TASK_ID='43083';

SQL> SELECT TO_CHAR(execution_start,'dd-mon-yyyy hh24:mi:ss') || ' -> ' || TO_CHAR(execution_end,'dd-mon-yyyy hh24:mi:ss') AS execution_time,

2       status,status_message,pct_completion_time

3       FROM DBA_ADVISOR_LOG

WHERE task_name='TASK_43083';  4

EXECUTION_TIME                                                 STATUS

-------------------------------------------------------------- -----------

STATUS_MESSAGE

------------------------------------------------------------------------------------

PCT_COMPLETION_TIME

-------------------

21-dec-2016 08:45:18 -> 21-dec-2016 08:45:33                   COMPLETED

0

================================================

USED SQL SUMMARY:

SELECT * FROM DBA_ADVISOR_TASKS T WHERE TASK_NAME='TASK_43083';

SELECT * FROM DBA_SQLTUNE_STATISTICS

SELECT * FROM DBA_SQLTUNE_BINDS

SELECT * FROM DBA_SQLTUNE_PLANS WHERE TASK_ID='43083'

SELECT TO_CHAR(execution_start,'dd-mon-yyyy hh24:mi:ss') || ' -> ' || TO_CHAR(execution_end,'dd-mon-yyyy hh24:mi:ss') AS execution_time,

status,status_message,pct_completion_time

FROM DBA_ADVISOR_LOG

WHERE task_name='TASK_43083';

==============================================================

OEM下的就简单很多了,点几下就够了:

选择sql tuning adviser:

这里的name可以自己定义,系统也会生成,即task name

总的时间限制30mins,comprehensive的分析范围,立即分析。这些都默认的就可以。

等待一下,正在执行优化任务

这里没什么推荐的所以为空,点击SPA Validation results看看是什么

如果有recommend生成的话,这个SPA是可以给新的优化来做测试的。

sql tuning advisor使用的更多相关文章

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

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

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

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

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

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

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

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

  5. 使用ORACLE SQL Tuning advisor快速优化低效的SQL语句

    ORACLE10G以后版本的SQL Tuning advisor可以从以下四个方面给出优化方案 (1)为统计信息丢失或失效的对象收集统计信息   (2)考虑优化器的任何数据偏差.复杂谓词或失效的统计信 ...

  6. How to use STA(sql tuning advisor)

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

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

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

  8. SQL Tuning Advisor

    SQL Tuning Advisorsql调优顾问可提供的建议有:-收集对象的统计信息-创建索引-重写sql语句-创建sql profile-创建sql plan baseline SQL Tunin ...

  9. 初次使用SQL调优建议工具--SQL Tuning Advisor

    在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包. 使用STA一定要保证优化器是CBO模式下 ...

随机推荐

  1. 一步一步开发Game服务器(二)登陆2

    上一篇文章,讲解了简单的登陆情况.接下来我们继续讲解登陆模块. 在正常的游戏服务器情况下.在尚未登录前可以查看服务器大区情况,登陆后也可以查看服务器大区情况,然后选择大区服务器.进行登录操作. 这样的 ...

  2. 为jQuery写插件

    很多场合,我们都会调用jQuery的插件去完成某个功能,比如slider. 如下图,做一个div,通过“$( "#slider" ).slider();”的方式直接将div变成sl ...

  3. C#中实现对象间的更新操作

    最近工作的时候遇到一个问题,根据Web端接收到的对象obj1,更新对应的对象值ogj2.先判断obj1中属性值是否为null, 若不等于null,则更新obj2中对应属性值:若等于null,则保持ob ...

  4. HTML中嵌入pdf的简单方法

    <embed src="> 或者你不想显示某些功能的话: <embed src=">

  5. KMP算法-Java实现

    目的: 为了解决字符串模式匹配 历程: 朴素模式匹配:逐次进行比较 KMP算法:利用匹配失败得到的信息,来最大限度的移动模式串,以此来减少比较次数提高性能 概念: m:是目标串长度 n:是模式串长度 ...

  6. Java中的可变长参数

    可变长参数的定义 与一般方法没多大差别,只不过形参多了...(三个点) 方法名(数据类型 ... 变量名){} 小案例: public class ParamDemo { public static ...

  7. Hibernate —— 概述与 HelloWorld

    一.Hibernate 概述 1.Hibernate 是一个持久化框架 (1)从狭义的角度来讲,“持久化” 仅仅指把内存中的对象永久的保存到硬盘中的数据库中. (2)从广义的角度来讲,“持久化” 包括 ...

  8. php实现设计模式之 单例模式

    <?php /*单例模式:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.(创建型模式) * * */ class singleton{ pr ...

  9. Lind.DDD.ConfigConstants统一管理系统配置

    回到目录 Lind.DDD.ConfigConstants属于新添加的组件,用来帮助我们安全的进行配置消息的管理,我们在开发项目时,有个感觉,你的config配置项会越来越多,越来越难以阅读,随着你引 ...

  10. 深入理解和应用Float属性

    一.Float的特性 1. 应用于文字围绕图片 2. 创建一个块级框 3. 多列浮动布局 4. 浮动元素的宽度.高度自适应,但可以设置其值. 二.核心解决的问题 文字围绕图片:img标签与多个文本标签 ...