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

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两个用户的表的顾问功能,所能要分析的表不要用这两个用户建。

时间: 2024-11-07 13:44:21

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

【oracle】oracledba6 SQL Tuning sets

You want to use the SQL Tuning Advisor to generate recommendation s for badly written SQL statements in your development environment. W hich three sources can you select for the advisor to analyze? (Choose three.) A. Top SQL B. snapshots C. SQL Tunin

[SQL优化工具]Quest.Central.For.Databases——SQL Tuning for SQL Server

随着企业数据库的急剧膨胀和日益复杂,DBA为保证数据库性能所付出的努力与日俱增,手工或使用多种无法集成的管理工具,都会给日常管理和维护带来不必要的困难. Quest Central for Databases 是一种集成化.图形化.跨平台的数据库管理解决方案,可以管理异构环境下的 Oracle.DB2 和 SQL server 数据库.Quest Central for Databases 消除了企业IT人员管理多种数据库时面临的技术障碍,提高了IT人员工作效率,改善了数据库性能和数据库应用的可

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

 怎样使用oracle 的DBMS_SQLTUNE package 来执行 Sql Tuning Advisor 进行sql 自己主动调优 1>.这里简单举个样例来说明DBMS_SQLTUNE 的使用 首先现运行下某个想要调优的sql,然后获取sqlid SQL> select * from v$sqltext where sql_text like 'select * from dual%'; ADDRESS          HASH_VALUE SQL_ID        COMMA

如何使用oracle 的DBMS_SQLTUNE package 来运行 Sql Tuning Advisor 进行sql 自动调优

 如何使用oracle 的DBMS_SQLTUNE package 来运行 Sql Tuning Advisor 进行sql 自动调优 1>.这里简单举个例子来说明DBMS_SQLTUNE 的使用 首先现执行下某个想要调优的sql,然后获取sqlid SQL> select * from v$sqltext where sql_text like 'select * from dual%'; ADDRESS          HASH_VALUE SQL_ID        COMMAND

ORACLE 11G 禁用 SQL TUNING ADVISOR

生产上有一套11g数据库alert.log报错ORA-16957: SQL Analyze time limit interrupt. 查询MOS相关文档Troubleshooting: ORA-16957: "SQL Analyze time limit interrupt" Errors (文档 ID 1275248.1) The ORA-16957 error is an internal error code used to indicate that SQL Tuning T

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

前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰富的DBA可以从各种方向下手,有时通过建立正确索引即可获得很好的优化效果,但是那些复杂SQL错综复杂的表关联,却让DBA们满头大汗. 如下特别介绍一种oracle官方提供的科学优化方法STA,经过实践,不敢说此特性绝对有效,但是可以开阔思路,并且从中学到许多知识,不再用“猜”的方式去创建索引了. SQL优化器SQL Tuning Advisor (STA),是oracle的sql优化补助工具.

ORACLE SQL TUNING ADVISOR 使用方法

sql tunning advisor 使用的主要步骤: 1 建立tunning task 2 执行task 3 显示tunning 结果 4 根据建议来运行相应的调优方法  下面来按照这个顺序来实施一遍:    1  建立测试表以及索引 SQL> CREATE TABLE test_sql_advisor AS SELECT OWNER,OBJECT_NAME,OBJECT_ID FROM DBA_OBJECTS; Table created SQL> select count(*) fro

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

生产上有一套11g数据库alert.log报错ORA-16957: SQL Analyze time limit interrupt.  查询MOS相关文档Troubleshooting: ORA-16957: "SQL Analyze time limit interrupt" Errors (文档 ID 1275248.1)    The ORA-16957 error is an internal error code used to indicate that SQL Tuni

SQL Tuning 基础概述08 - SQL Tuning Advisor

SQL调优顾问 SQL Tuning Advisor的使用案例: 1.构建测试表T SQL> conn zjy/zjy Connected. SQL> create table t as select * from dba_objects; Table created. SQL> select count(*) from t; COUNT(*) ---------- 653500 2.对“select owner, object_id, object_name from t where