使用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. 2 kNN-K-Nearest Neighbors algorithm k邻近算法(一)

    给定训练数据样本和标签,对于某测试的一个样本数据,选择距离其最近的k个训练样本,这k个训练样本中所属类别最多的类即为该测试样本的预测标签.简称kNN.通常k是不大于20的整数,这里的距离一般是欧式距离 ...

  2. listbox横向排列

    在Listbox中横向显示CheckBox 前台代码 <ListBox Height=" > <StackPanel x:Name="sp" Orien ...

  3. android 自定义控件,自定义属性设置

    做listView的上拉下拉刷新,网上找了个历程.但是有些界面只有上拉刷新,有些界面是下拉刷新.觉得应该在xml里定义一个属性控制上下拉使能. 0.关于自定义控件: 自定义控件设计主要方式有:a) 继 ...

  4. [原]CAS和Shiro在spring中集成

    shiro是权限管理框架,现在已经会利用它如何控制权限.为了能够为多个系统提供统一认证入口,又研究了单点登录框架cas.因为二者都会涉及到对session的管理,所以需要进行集成. Shiro在1.2 ...

  5. poj2350

    #include <stdio.h> #include <stdlib.h> int main() { ],tim,i; scanf("%d",&n ...

  6. golang win32编程的一个dll坑

    例子 package main import ( "github.com/lxn/win" "strconv" "syscall" ) fu ...

  7. 面向对象程序设计-C++_课时26拷贝构造Ⅰ_课时27拷贝构造Ⅱ

    一旦写了一个类,给它3个函数: 1default construtor 2virtual destructor 3copy constructor Constructions vs. assignme ...

  8. HDU ACM 1046 Gridland 找规律

    分析:给出一个矩阵.问最短从一个点经过全部点以此回到起点的长度是多少.绘图非常好理解.先画3*4.3*3.4*4的点阵图案.试着在上面用最短路走一走,能够发现当矩形点阵的长宽都是奇数时,最短路中必然有 ...

  9. 二、Cocos2dx中Android部分的c++和java实现相互调用(高级篇)

    本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=97 本文目的 要完成在cocos2dx的场景上一个点击事件,传递一个消息到java层,下面让我们看看 ...

  10. 响应式(css_media)

    开始研究响应式web设计,CSS3 Media Queries是入门. Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变 ...