Oracle SQL 调优健康检查脚本
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 调优健康检查脚本的更多相关文章
- Script:SQL调优健康检查脚本
Script:SQL调优健康检查脚本 http://www.askmaclean.com/archives/sql-tuning-health-check-script.html 以下脚本可以用于收集 ...
- PLSQL_PLSQL调优健康检查脚本SQLHC(案例)
2014-08-23 Created By BaoXinjian
- Oracle SQL调优记录
目录 一.前言 二.注意点 三.Oracle执行计划 四.调优记录 @ 一.前言 本博客只记录工作中的一次oracle sql调优记录,因为数据量过多导致的查询缓慢,一方面是因为业务太过繁杂,关联了太 ...
- 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. ...
- Oracle SQL调优之分区表
目录 一.分区表简介 二.分区表优势 三.分区表分类 3.1 范围分区 3.2 列表分区 3.3 散列分区 3.4 组合分区 四.分区相关操作 五.分区相关查询 附录:分区表索引失效的操作 一.分区表 ...
- Oracle SQL调优之表设计
在看<收获,不止sql优化>一书,并做了笔记,本博客介绍一下一些和调优相关的表比如分区表.临时表.索引组织表.簇表以及表压缩技术 分区表使用与查询频繁而更新数据不频繁的情况,不过要记得加全 ...
- Oracle SQL调优
在多数情况下,Oracle使用索引t来更快地遍历表,优化器主要根据定义的索引来提高性能. 但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种 ...
- Oracle SQL调优之绑定变量用法简介
目录 一.SQL执行过程简介 二.绑定变量典型用法 2.1.在SQL中绑定变量 2.2.在PL/SQL中使用绑定变量 2.3.PL/SQL批量绑定变量 2.4.Java代码里使用绑定变量 最近在看&l ...
- Oracle SQL 调优之 sqlhc
SQL 执行慢,如何 快速准确的优化. sqlhc 就是其中最好工具之一 通过获得sql所有的执行计划,列出实际的性能的瓶颈点,列出 sql 所在的表上的行数,每一列的数据和分布,现有的索引,sql ...
随机推荐
- NET通用平台
NET通用平台.通用权限.易扩展.多语言.多平台架构框架 先拿出我半前年前平台的设计初稿,经过半年的努力我已经完成了该设计稿的所有功能.并且理念已经远远超出该设计稿. 下面是一些博友对我贴子的评价: ...
- js获取设备信息
var su = navigator.userAgent.toLowerCase(), mb = ['ipad', 'iphone os', 'midp', 'rv:1.2.3.4', 'ucweb' ...
- 经常使用的正則表達式归纳—JavaScript正則表達式
来源:http://www.ido321.com/856.html 1.正则优先级 首先看一下正則表達式的优先级,下表从最高优先级到最低优先级列出各种正則表達式操作符的优先权顺序: 2.经常使用的正則 ...
- spring4.1+springmvc4.1+mybatis3.2.8+spring-security3.2.5集成环境建设
在最近使用的项目ssi+spring-security 结构体.建立你自己的家,这是什么环境. 只有记录的目的. 项目结构: 类文件: ...
- 6月27日CTO俱乐部下午茶印象
作者:朱金灿 来源:http://blog.csdn.net/clever101 感谢CSDN的邀请,有幸参加了6月27日“CTO俱乐部下午茶时光:CTO在团队管理中所遇到的那些事”活动.本期的主讲嘉 ...
- SQL Server :理解Page Free Space (PFS) 页
原文:SQL Server :理解Page Free Space (PFS) 页 我们已经讨论了GAM与SGAM页,数据页(Data Page) ,现在我们来看下页面自由空间页(Page Free S ...
- Linux 下 Error: Could not find or load main class Hello
在linux下写了一个很easy的Hello world程序,编译执行居然报错:Error: Could not find or load main class Hello 最后发现是CLASSPAT ...
- C#四舍五入保留两位小数
- Android 4.0新组件:GridLayout详细说明
于Android 4.0(API 14)它提供了一个新的组件GridLayout,它继承自Linearlayout,用于执行网络格样式布局. 在某些方面,GridLayout与TableLayout和 ...
- linux、hdfs、hive、hbase经常使用的命令
linux经常使用命令 pwd 查看当前工作文件夹的绝对路径 cat input.txt 查看input.txt文件的内容 ls 显示当前文件夹下全部的文件及子文件夹 rm recommender-d ...