使用OEM方式来创建SQL Access Advisor访问优化建议,已经是四五年的事了,下面就来写写怎样使用DBMS_ADVISOR.SQLACCESS_ADVISOR来创建SQL Access Advisor访问优化建议吧。

1、SQL Access Advisor从三个方面提供优化建议

1.1、索引优化建议

SQL Access Advisor可以建议通过创建bitmap,function-based,B-tree 三种类型索引的改进SQL执行性能。

1.2、物化视图优化建议

SQL Access Advisor可以建议通过创建fast refreshable和fullrefreshable刷新方式的物化视图的方式改进SQL执行性能。

1.3、分区优化建议

SQL Access Advisor可以建议在非分区表上使用分区来提高性能。此外可能建议在表上(分区和非分区表)创建新的索引和物化视图的方式改进SQL执行性能。

2、SQL Access Advisor的依赖信息

SQL Access Advisor依赖于表的统计信息。

本文作者“踩点”做过反复测试,在下文中用到的litest.litest_8表的统计信息删除后,偿试生成优化建议,SQL AccessAdvisor是不会生成优化建议的;重新对litest.litest_8表收集统计信息,SQL Access Advisor即可生成优化建议。

3、创建SQL Access Advisor优化任务及获取建议内容(两种方式任选一种)

3.1 创建优化任务,方式一:

DECLARE

task_name VARCHAR2(200);

BEGIN

task_name := 'LI_TASK_9';

DBMS_ADVISOR.QUICK_TUNE(DBMS_ADVISOR.SQLACCESS_ADVISOR, task_name,

'select * from litest.litest_8 where created>sysdate-50 and created<sysdate-30 and object_id=79420');

END;

/

3.1 创建优化任务,方式二(方式二比方式一更简单直接):

SQL> execute DBMS_ADVISOR.QUICK_TUNE(DBMS_ADVISOR.SQLACCESS_ADVISOR,'LI_TASK_9','select * from litest.litest_8 where created>sysdate-50 and created<sysdate-30 and object_id=79420');

两种方式都要注意以下两点:

(1)、如果SQL文本中本身带有单引号(')的,需要替换成双引号('’);

(2)、不支持SQL语句中含有SYS和SYSTEM用户下的表对象

3.2 查看上面优化任务创建是否成功以及其基本情况

SQL>select a.owner,a.task_id,a.task_name,execution_start,a.status_message,b.commandfromdba_advisor_log a,dba_advisor_actions bwhere a.task_id=b.task_idand b.task_name='LI_TASK_9'

owner

task_id

task_name

execution_start

status_message

command

SYS

852

LI_TASK_9

2013/9/24 23:55

访问指导执行完毕

CREATE INDEX

如果表上缺少统计信息或SQL Access Adviso认为无优化建议,将不会生成TASK

3.3 查看使用优化建议前后的资源成本对比信息

,'低') 重要性 FROM dba_advisor_sqla_wk_stmts WHERE task_name='LI_TASK_9';

sql_id

优化前cost

优化后cost

cost提升倍数

重要性

5rr7tx64r1pcs

14165

5

2833

3.4 查看建议方案全部内容

3.4.1 创建一个directory目录存放生成的建议方案内容文件(如果已存有可用directory,此步可跳过)

SQL> create directory EXPDP_DIR as '/dba/soft'

3.4.2 生成建议方案内容文件

SQL> exec DBMS_ADVISOR.CREATE_FILE(DBMS_ADVISOR.GET_TASK_SCRIPT('LI_TASK_9'),'EXPDP_DIR', 'LI_TASK_9.sql');

3.4.3 查看建议方案文件内容

$cd /dba/soft

$vi LI_TASK_9.sql

Rem  SQL Access Advisor: Version 11.2.0.3.0 - Production

Rem

Rem  Username:        SYS

Rem  Task:            LI_TASK_9

Rem  Execution date:

Rem

CREATE INDEX "LITEST"."LITEST_8_IDX$$_03660000"

ON "LITEST"."LITEST_8"

("OBJECT_ID","CREATED")

COMPUTE STATISTICS;

  上面的SQL Access Advisor 给出了明确的创建索引的语句,建议在LIST_8表上创建OBJECT_ID+ CREATED字段的联合索引

4、删除SQL Access Advisor优化任务

SQL> exec DBMS_ADVISOR.DELETE_TASK('LI_TASK_9');

本文由“踩点”所作,转发请说明出处。谢谢!

用DBMS_ADVISOR.SQLACCESS_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. SQL Access Advisor in Oracle Database 10g

    The SQL Access Advisor makes suggestions about indexes and materialized views which might improve sy ...

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

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

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

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

  6. 手工执行sql tuning advisor和sql access advisor

    sql tuning advisor:创建任务DECLARE my_task_name VARCHAR2(30); my_sqltext CLOB; BEGIN my_sqltext := 'SELE ...

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

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

  8. SQL Access Advisor

    1.概述: provides advice on improving the performance of a database through partitioning, materialized ...

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

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

随机推荐

  1. 让vs2010的html编辑器验证html5语法

    或者在Tools -> option -> Text Editor -> Html -> Validation

  2. Copy an serializable object deeply

    http://www.java2s.com/Tutorial/Java/0100__Class-Definition/Copyanserializableobjectdeeply.htm http:/ ...

  3. hdu4288 Coder

    Coder Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  4. oracle job 定时执行 存储过程

    oracle job 定时执行 存储过程   一:简单测试job的创建过程案例: 1,先创建一张JOB_TEST表,字段为a 日期格式 SQL> create table JOB_TEST(a ...

  5. word-wrap,white-space和text-overflow属性

    (1) //在断点处换行 word-wrap: normal; //允许在长单词进行换行 word-wrap: break-word; (2) white-space:怎么处理元素间的空白 white ...

  6. js判断终端是手机还是电脑

    $(function(){ function browserRedirect() { var sUserAgent= navigator.userAgent.toLowerCase(); var bI ...

  7. error while loading shared libraries: libevent-1.x.so.1

    安装完memcache后启动报错(error while loading shared libraries: libevent-1.x.so.1) 这是由于64位linux会去/usr/lib64目录 ...

  8. 【菜鸟学习Linux】-第一章-Linux环境搭建-安装VMware虚拟机

    本人菜鸟一个,刚毕业才上班2个月,现在用到Linux部署项目,这才开始学习Linux,以下是我在安装Linxu系统是遇到的一些问题,希望能给广大菜鸟们在学习的道路上提供帮助和指导,废话不多说!开工! ...

  9. CentOS 安装Node.js

    先安装gcc-c++编译环境和openssl yum install gcc-c++ openssl-devel 然后 下载包并解压 cd /usr/local/src wget http://nod ...

  10. JMS详细的工作原理【转】

    如果手机只能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了.为什么不能先将信息存下来,当用户需要查看信息的时候再去获得信息呢?伴随 ...