sql tuning advisor使用
DB tuning advisor是创建优化任务,对某些sql数据库进行分析,并尽量给出优化建议的一个强大的数据库工具。
自己平时几乎没用过这玩意,所以来测一测用法,其实对于一些sql一筹莫展的时候跑跑这个,看看数据库的建议也是一个突破点。
一般利用database tuning advisor的顺序:
- 找出要去优化调整的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使用的更多相关文章
- SQL Tuning 基础概述08 - SQL Tuning Advisor
SQL调优顾问 SQL Tuning Advisor的使用案例: 1.构建测试表T 2.定义调整任务 3.修改调整任务参数 4.执行调整任务 5.监控调整任务 6.查看调整任务建议 7.删除调整任务 ...
- 【转】使用SQL Tuning Advisor STA优化SQL
SQL优化器(SQL Tuning Advisor STA)是Oracle10g中推出的帮助DBA优化工具,它的特点是简单.智能,DBA值需要调用函数就可以给出一个性能很差的语句的优化结果.下面介绍一 ...
- 如何用 SQL Tuning Advisor (STA) 优化SQL语句
在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等.在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning ...
- Oracle 10G强大的SQL优化工具:SQL Tuning Advisor
p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; orphans: 2; widow ...
- 使用ORACLE SQL Tuning advisor快速优化低效的SQL语句
ORACLE10G以后版本的SQL Tuning advisor可以从以下四个方面给出优化方案 (1)为统计信息丢失或失效的对象收集统计信息 (2)考虑优化器的任何数据偏差.复杂谓词或失效的统计信 ...
- How to use STA(sql tuning advisor)
一.手工生成Sql tuning advisor 1.SQL text format: DECLARE my_task_name VARCHAR2(30); my_sqltext CLO ...
- Oracle调整顾问(SQL Tuning Advisor 与 SQL Access Advisor
在Oracle数据库出现性能问题时,使用Oracle本身的工具包,给出合理的调优建议是比较省力的做法. tuning advisor 是对输入的sql set的执行计划进行优化accsee advis ...
- SQL Tuning Advisor
SQL Tuning Advisorsql调优顾问可提供的建议有:-收集对象的统计信息-创建索引-重写sql语句-创建sql profile-创建sql plan baseline SQL Tunin ...
- 初次使用SQL调优建议工具--SQL Tuning Advisor
在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包. 使用STA一定要保证优化器是CBO模式下 ...
随机推荐
- 用react的ReactCSSTransitionGroup插件实现简单的弹幕动画
1,开始的思路 公司想做直播方面的项目,并想加入弹幕的功能,直播的页面已经作为一个组件放在了用react+redux写好的一个网站项目上.所以技术老大让我研究下如何用react实现弹幕的功能.下面我就 ...
- Halcon11与VS2010联合开发
刚开始学习Halcon,需要使用Halcon与C++联合开发软件,查了网上的资料都是Halcon10的,我用的是Halcon11和VS2010的开发环境,实践了一下发现有一些问题,于是把自己的配置的过 ...
- react入门(2)
接着上一次的讲,如果没有看过上一篇文章的小伙伴可以先看一下http://www.cnblogs.com/sakurayeah/p/5807821.html React事件 可以先看一下官网讲解的内容h ...
- webpack+vue-cli项目打包技巧
1.设置config文件夹index.js中productionSourceMap的值为false,也就是设置webpack配置中devtool为false,打包后文件体积可以减少百分之八十!!!!! ...
- Windows 10 版本 1507 中的新 AppLocker 功能
要查看 Windows 10 版本信息,使用[运行]> dxdiag 回车 下表包含 Windows 10 的初始版本(版本 1507)中包括的一些新的和更新的功能以及对版本 1511 的 W ...
- 【原创】Kafka console consumer源代码分析(二)
我们继续讨论console consumer的实现原理,本篇着重探讨ZookeeperConsumerConnector的使用,即后续所有的内容都由下面这条语句而起: val connector = ...
- Redis Cluster原理
Redis Cluster 是Redis的集群实现,内置数据自动分片机制,集群内部将所有的key映射到16384个Slot中,集群中的每个Redis Instance负责其中的一部分的Slot的读写. ...
- authentication与网站安全验证
1.Forms 身份验证提供程序 通过 Forms 身份验证,可以使用所创建的登录窗体验证用户的用户名和密码.未经过身份验证的请求被重定向到登录页,用户在该页上提供凭据和提交窗体.如果应用程序对请求进 ...
- 再次推荐一款逼真的HTML5下雪效果
再次推荐一款逼真的下雪效果 效果图: 效果描述:之前推荐过一款下雪的jQuery插件之前的那款下降速度比较缓慢,今天推荐的这个下降速度比较快,大雪哇 使用方法:1.将index.html中的样式复制到 ...
- EC笔记,第二部分:6.若不想使用编译器默认生成的函数,就该明确拒绝
6.若不想使用编译器默认生成的函数,就该明确拒绝 1.有的时候不希望对象被复制和赋值,那么就把复制构造函数与赋值运算符放在private:中,但是这两个函数是否需要实现呢?假设实现了,那么你的类成员方 ...