Oracle数据库出现性能问题时,使用Oracle本身的工具包,给出合理的调优建议是比较省力的做法。

tuning advisor 是对输入的sql set的执行计划进行优化
accsee advisor 是对sql set当前如果引入索引、分区的话,性能有多大的提升,给出建议。
sql tuning advisor是从一方面给出的建议,access advisor可以针对一个表或者多个表的所有操作给出分析建议,比如说对于select语句他会建议增加索引,而会降低DML的性能,sql access advisor则针对所有的操作包括select,DML等总体的综合分析

下面两种包的介绍及具体做法。

SQL Tuning Advisor 粒度最小的调整工具.

将一条或多条SQL语句做为输入内容,分析所有访问路径,然后生成改进SQL语句的建议,并提出索引,物化视图和分区方案来提高应用程序的总体性能。
另外,在维护窗口中,Oracle也会针对Automatic Workload Repository(AWR) 来确定和记录的高负载语句自动化运行SQL Tuning Advisor
SQL Access Advisor 
它涉及工作量中所有SQL语句,并提出索引,特化视图和分区方案来提高应用程序的总体性能。

小区别:

SQL Tuning Advisor 分别调整每条SQL语句
SQL Access Advisor 同时调整所有SQL语句

SQL Tuning Advisor :

1. 在匿名PL/SQL块中,为SQL 语句定义调整任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
declare
    tune_task_name varchar2(30)     ;
    bad_sql_stmt clob;
begin
    bad_sql_stmt := 'select distinct id from demo.txcl';
    tune_task_name := dbms_sqltune.create_tuning_task
        ( sql_text => bad_sql_stmt,
          user_name => 'DEMO',
          scope => 'COMPREHENSIVE',
          time_limit => 60,
          task_name => 'xcl_sql_tuing_task',
          description => 'See what is wrong with the SELECT'
            ) ;
end;
/

2. 设置任务时指定的时限值是60分钟.

1
2
3
4
5
6
7
8
begin
    dbms_sqltune.set_tuning_task_parameter
        (task_name => 'xcl_sql_tuing_task',
         parameter => 'TIME_LIMIT',
         value => 30
         );
end;
/

3. 使用EXECUTE_TUNING_TASK过程启动调整任务

1
2
3
4
5
begin
    dbms_sqltune.execute_tuning_task
     (task_name => 'xcl_sql_tuing_task');
end;
/

4. 通过连接DBA_ADVISOR_TASKS和V$ADVISOR_PROGRESS来查任务状态

1
2
3
select task_name,status,sofar,totalwork 
from dba_advisor_tasks 
join v$advisor_progress using(task_id)
where task_name = 'xcl_sql_tuing_task';

5. 查看调整任务给出的建议

1
select dbms_sqltune.report_tuning_task('xcl_sql_tuing_task') from dual;

SQL Access Advisor:

使用 dbms_advisor.quick_tune来对单个SQL语句进行调整
它的执行很像SQL Tuning Advisor,但执行的分析层次却深入得多,生成的建议也更多。

1. 指定一个存放输出文件的目录

1
2
--输出文件目录
create directory tune_scripts as '/demo/tune_scripts';

2.采集,分析并给出建议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
declare
    v_task_name VARCHAR2(255);
    v_sql_stmt  VARCHAR2(4000);
 
    v_tune_sql_filename VARCHAR2(255);
    v_cfile_directory VARCHAR2(255);
begin
    v_sql_stmt := 'select  * from  demo.txcl t where t.id = :1 ';
    v_task_name :='tune_demo_txcl';
 
    v_tune_sql_filename :=  'tune_demo_txcl.sql';
    v_cfile_directory := 'TUNE_SCRIPTS';
 
    dbms_stats.gather_table_stats(
        ownname => 'DEMO',
        tabname => 'TXCL',
        cascade => true);
     
    --dbms_advisor.reset_task(v_task_name);
 
    --分析并得到建议
    dbms_advisor.quick_tune(DBMS_ADVISOR.SQLACCESS_ADVISOR,
                v_task_name,
                v_sql_stmt);
 
    --将建议输出到指定文件中
    -- select * from dba_advisor_actions where task_name ='tune_demo_txcl' ;
    -- select * user_advisor_sqla_wk_stmts where task_name ='tune_demo_txcl'  ;
    dbms_advisor.create_file(
        dbms_advisor.get_task_script(v_task_name),
        v_cfile_directory,
        v_tune_sql_filename
        );
 
 
    --删除任务
    dbms_advisor.delete_task(v_task_name); 
 
exception
    when others then
        dbms_output.put_line(sqlerrm);
end;
/

常见错误:

ORA-13600: error encountered in Advisor

QSM-00794: the statement can not be stored due to a violation of the invalid table reference filter

原因是dbms_advisor.quick_tune不支持为SYS和SYSTEM两个用户的表的顾问功能,所能要分析的表不要用这两个用户建。

Oracle调整顾问(SQL Tuning Advisor 与 SQL Access Advisor的更多相关文章

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

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

  2. Oracle自带工具sql优化集-SQL Tuning Advisor (使用心得体会)

    如何有效的诊断和监控高负载的SQL对于DBA来说并非是件容易的事情,对SQL语句手工调优需要很多的经验和技巧, 结合个人经验常见如下问题:          . 对SQL语句本身进行优化以便获得更优的 ...

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

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

  4. Oracle SQL Tuning Advisor 测试

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

  5. [terry笔记]Oracle SQL 优化之sql tuning advisor (STA)

    前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰富的DBA可以从各种方向下手,有时通过建立正确索引即可获得很好的优化效果,但是那些复杂SQL错综 ...

  6. ORACLE SQL TUNING ADVISOR 使用方法

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

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

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

  8. Oracle 11g 禁用 SQL Tuning Advisor 与 auto space advisor

    生产上有一套11g数据库alert.log报错ORA-16957: SQL Analyze time limit interrupt.  查询MOS相关文档Troubleshooting: ORA-1 ...

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

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

随机推荐

  1. Java Spring cron表达式使用详解

    Java Spring cron表达式使用详解   By:授客 QQ:1033553122 语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek ...

  2. JS中replace替换全部的正确应用

    一般使用 var str = "test-test-test"; str = "test-test-test".replace("test" ...

  3. JS实现数组去重方法整理

    前言 我们先来看下面的例子,当然来源与网络,地址<删除数组中多个不连续的数组元素的正确姿势> 我们现在将数组中所有的‘ a’ 元素删除: var arr = ['a', 'a', 'b', ...

  4. phpcms导航菜单的写法

    PHP打印方法: {php print_r(变量);} <?php print_r(变量);?> 1. <div class="webnav"> {pc:g ...

  5. iPhone手机怎么投屏到电脑上

    如今生活水平不断上升,人们更加追求高质量.高享受的生活,所以可以利用一切资源提高生活质量,享受更好的生活体验,比如说手机投屏电脑就可以提高我们的视觉体验,所以更多的人去尝试,那么iPhone手机怎么投 ...

  6. android笔试题二

    1.android系统架构: Linux内核——标准库——Framework层——应用层 Linux层包括:Android系统的核心服务,硬件驱动,进程管理,系统安全等等 (现在又加了一层变成了:Li ...

  7. git 入门教程之紧急修复

    和往常一样,每个人团队开发者都在自己的本地分支上进行日常工作,相互独立又相互联系,一直以来相安无事,可是某天下午,上级领导突然急冲冲的打电话告诉你线上出bug了,需要你紧急修复,下班之前必须解决! 我 ...

  8. (三)版本控制管理器之CVS(下)

    在上一篇文章<(二)版本控制管理器之CVS(上)>中,我为大家介绍了什么是CVS.CVS的特点.CVS的安装.CVSNT服务器的配置.TortoiseCVS客户端的配置等,本篇文章继续为大 ...

  9. Python __init__.py文件的作用

    我们经常在python的模块目录中会看到 "__init__.py"  这个文件,那么它到底有什么作用呢? 1. 模块包(module package)标识 如果你是使用pytho ...

  10. Docker Data Center系列(三)- DTR安装指南

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 成为UCP管理的 ...