Oracle SQL 调优健康检查脚本

 我们关注数据库系统的性能,进行数据库调优的主要工作就是进行SQL的优化。良好的数据架构设计、配合应用系统中间件和写一手漂亮的SQL,是未来系统上线后不出现致命性能问题的有力保证。

  在CBO时代,一个SQL的执行计划是多样的。影响执行计划的因素也从过去RBO时代的SQL书写规则变为综合性因素。这为我们生成更加优秀执行计划提供了基础,同时也给我们进行调优带来的很多麻烦。

  目前我们通常的做法,是通过AWR报告或者调试手段,发现某某SQL有问题,之后从Library Cache(或者AWR)中抽取出执行计划。同时相对应的各种统计信息也需要手工收集。

  在MOS[ID 1366133.1]中,发现一个Oracle非公开使用的脚本,可以帮助我们一次性的将执行SQL相关的健康信息全部收集,并且输出为HTML格式文件。本篇就介绍这个脚本工具,也当作是一种推广。

  1、环境准备

  我们选择Oracle 10g作为实验环境。

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE   10.2.0.1.0 Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0–Production

构造一个实验SQL,用来进行演示。

SQL> select /*+ demo */ emp.empno, emp.ename, dept.dname

2 from emp, dept

3 where emp.deptno=dept.deptno;

EMPNO ENAME     DNAME

----- ---------- --------------

7369 SMITH     RESEARCH

7934 MILLER    ACCOUNTING

(篇幅原因,结果集合省略……)

--此时,该SQL已经存在于Library Cache中;

SQL> select sql_id from v$sqlarea where sql_text like 'select /*+ demo */%';

SQL_ID

-------------

auurp0v54vjgc

2、调用脚本

我们从网站上可以下载到生成脚本sqlhc.sql(SQL Tuning Health-Check Script. [ID 1366133.1])。之后在sqlplus里调用。

D:\test>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 12月 28 22:10:18 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn sys/Conan2002@orcl as sysdba

已连接。

SQL> @sqlhc.sql

--许可证拥有标识;

Parameter 1:

Oracle Pack license (Tuning or Diagnostics) [Y|N] (required)

输入1 的值: N

PL/SQL 过程已成功完成。

--进行检查的SQL_ID编号;

Parameter 2:

SQL_ID of the SQL to be analyzed (required)

输入2 的值: auurp0v54vjgc

之后就是生成html格式报告的过程,最后会以生成文件名称的方式通知。

SQLTH file has been created:

sqlhc_orcl_ibmvs2a1bhcns0_10.2.0.1.0_auurp0v54vjgc_20111228221121.html.

Review this file and act upon its content.

SQL>

这样在指定目录下,我们就可以找到生成的html格式报告文件。

D:\test>dir

驱动器 D 中的卷没有标签。

卷的序列号是 CA23-1191

D:\test 的目录

2011-12-28 22:11   <DIR>         .

2011-12-28 22:11   <DIR>         ..

2011-12-28 22:11          101,335 sqlhc.log

2011-12-28 21:49          109,841 sqlhc.sql

2011-12-28 22:11           10,140 sqlhc_orcl_ibmvs2a1bhcns0_10.2.0.1.0_auurp0v

54vjgc_20111228221121.html

3 个文件       221,316 字节

2 个目录 2,439,000,064 可用字节

3、结果报告分析

在报告中,主要分为三个部分。

首先,后台环境参数设置。其中包括该SQL设计使用的优化器和相关的数据表统计量选取基准。

其次就是相关设计数据表、索引的统计量信息。

最后是使用的执行计划信息。

4.结论

使用SQL Tuning Heath-Check脚本,可以帮助我们方便的将相关SQL的执行计划和统计信息一并抽出。作为我们进行性能调试的依据。

但是,笔者强调的是,作为调优人员,对基础知识、原理的理解是非常重要的。工具、脚本只是帮助我们日常效率提升的一个手段而已。

http://dev.yesky.com/183/30968683.shtml

Oracle SQL 调优健康检查脚本的更多相关文章

  1. Script:SQL调优健康检查脚本

    Script:SQL调优健康检查脚本 http://www.askmaclean.com/archives/sql-tuning-health-check-script.html 以下脚本可以用于收集 ...

  2. PLSQL_PLSQL调优健康检查脚本SQLHC(案例)

    2014-08-23 Created By BaoXinjian

  3. Oracle SQL调优记录

    目录 一.前言 二.注意点 三.Oracle执行计划 四.调优记录 @ 一.前言 本博客只记录工作中的一次oracle sql调优记录,因为数据量过多导致的查询缓慢,一方面是因为业务太过繁杂,关联了太 ...

  4. Oracle SQL调优系列之SQL Monitor Report

    @ 目录 1.SQL Monitor简介 2.捕捉sql的前提 3.SQL Monitor 参数设置 4.SQL Monitor Report 4.1.SQL_ID获取 4.2.Text文本格式 4. ...

  5. Oracle SQL调优之分区表

    目录 一.分区表简介 二.分区表优势 三.分区表分类 3.1 范围分区 3.2 列表分区 3.3 散列分区 3.4 组合分区 四.分区相关操作 五.分区相关查询 附录:分区表索引失效的操作 一.分区表 ...

  6. Oracle SQL调优之表设计

    在看<收获,不止sql优化>一书,并做了笔记,本博客介绍一下一些和调优相关的表比如分区表.临时表.索引组织表.簇表以及表压缩技术 分区表使用与查询频繁而更新数据不频繁的情况,不过要记得加全 ...

  7. Oracle SQL调优

    在多数情况下,Oracle使用索引t来更快地遍历表,优化器主要根据定义的索引来提高性能. 但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种 ...

  8. Oracle SQL调优之绑定变量用法简介

    目录 一.SQL执行过程简介 二.绑定变量典型用法 2.1.在SQL中绑定变量 2.2.在PL/SQL中使用绑定变量 2.3.PL/SQL批量绑定变量 2.4.Java代码里使用绑定变量 最近在看&l ...

  9. Oracle SQL 调优之 sqlhc

    SQL 执行慢,如何 快速准确的优化. sqlhc 就是其中最好工具之一 通过获得sql所有的执行计划,列出实际的性能的瓶颈点,列出 sql 所在的表上的行数,每一列的数据和分布,现有的索引,sql ...

随机推荐

  1. Linux通过使用pdb简单调试python计划

    python自带的调试工具库:pdb # -*- coding:utf-8 -*- def func(num): s = num * 10 return s if __name__ == '__mai ...

  2. python学习笔记之六:更加抽象

    Python被称为面向对象的语言,创建自己的对象是python非常核心的概念.这里会介绍如何创建对象,以及多态,封装,方法,特性,超类以及继承的概念. 一. 对象的魔力 面向对象程序设计中的术语 对象 ...

  3. postgresql数据库配置csv格式的日志输出

    postgresql数据库配置csv格风格日志输出 以下介绍postgresql数据库中关于csv格式日志(pg中一种比較具体的日志输出方式)的设置方法. 1.进入$PGDATA文件夹(pg的安装文件 ...

  4. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

    昨晚在编译源码,make一段时间之后报错如下: # A fatal error has been detected by the Java Runtime Environment: # # SIGSE ...

  5. git pull VS git fetch&merge(good)

    从图中可以看到,git fetch和git pull的区别, git fetch 不会自动的将结果merge到本地,只是将远程版本同步到本地版本库,而不会merge到本地副本. git pull  将 ...

  6. key 串口

    /******************************************************************** 函数功能:往串口发送一字节数据(可通过超级终端或者串口调试助 ...

  7. GRUB2配置详解:默认启动项,超时时间,隐藏引导菜单,配置文件详解,图形化配置

    配置文件详解: /etc/default/grub # 设定默认启动项,推荐使用数字 GRUB_DEFAULT=0 # 注释掉下面这行将会显示引导菜单 #GRUB_HIDDEN_TIMEOUT=0 # ...

  8. C#读书

    C#读书雷达   大家都知道,ThoughtWorks的技术雷达每年都会发布两到三次,它不但是业界技术趋势的标杆,更提供了一种卓有成效的方法论,即打造自己的技术雷达.在这种思想的驱动下,我们诞生了自己 ...

  9. selinux 工具下载地址

    http://userspace.selinuxproject.org/releases/ 里面包含了 Name Last modified Size Description Parent Direc ...

  10. C++ 版本的split_string

    vector<string> split_string(const string &in, char del, bool skip_empty) { vector<strin ...