我们关注数据库系统的性能,进行数据库调优的主要工作就是进行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的执行计划和统计信息一并抽出。作为我们进行性能调试的依据。
但是,笔者强调的是,作为调优人员,对基础知识、原理的理解是非常重要的。工具、脚本只是帮助我们日常效率提升的一个手段而已。
分享到:
相关推荐
参加oracle原厂培训,老师给的,很好用,介绍给大家 Produces an HTML report with a list of observations based on health-checks performed in and around a SQL statement that may be performing poorly. ...
3. **数据库健康检查**:检查数据库的状态,如表空间使用情况、数据文件状态、回滚段状态等,确保数据库的正常运行。 4. **异常报警**:当特定的性能指标超过预设阈值时,脚本可以触发警报,提醒DBA及时处理。 5. **...
集成的脚本可以进行全面的健康检查,检测数据库配置、性能指标和潜在风险。 在使用这些脚本时,DBA需要根据实际环境和需求进行定制和调整,确保监控内容的针对性和实用性。同时,定期分析监控结果,建立基线,对比...
5. **数据库健康检查**:这类脚本会定期运行,检查数据库的整体健康状况,比如检查数据文件一致性、检查表和索引的碎片情况、验证备份完整性等。 6. **性能调优**:一旦发现问题,脚本也可以用来执行性能调优,比如...
- **健康检查**:启动Nacos后,通过Nacos的Web管理界面或API接口,可以检查Nacos是否成功连接到Oracle数据库,以及服务是否正常运行。 - **性能调优**:根据实际负载情况,可能需要调整Oracle数据库的参数,如连接...
"sqlhc.zip脚本"是一个专门针对Oracle数据库健康检查的工具,它可以帮助管理员监控和诊断SQL查询的性能问题。以下是关于这个脚本包及其包含的文件的详细解释。 首先,`sqlhc.sql` 是主脚本,它的主要功能是执行SQL ...
Oracle巡检脚本是一系列预先编写好的脚本程序,其目的在于自动化执行一系列检查任务,用以评估Oracle数据库及其运行环境的状态。该巡检脚本内容十分丰富,涵盖了操作系统检查、Oracle数据库检查、以及一些特定的功能...
而后者则以自动化、批量分析为特点,降低了优化成本,适用于现有数据库对象的健康检查和大量SQL语句的扫描。 在开发阶段的优化流程中,开发人员应该在编写SQL时就考虑性能因素。通过TOAD编辑SQL,然后利用SQL ...
5. 数据库健康检查:综合评估数据库的整体健康状况。 二、性能调优脚本 性能调优脚本用于优化数据库性能,提高查询速度,降低资源消耗: 1. SQL性能分析:找出执行时间长、资源消耗大的SQL语句,进行优化。 2. 表...
Oracle数据库是全球广泛使用的大型企业级关系型数据库系统,对于其健康检查和日常维护的理解与实践至关重要。健康检查(巡检)确保了数据库的稳定运行,而日常维护则关乎数据的安全性和性能优化。以下是对这两个方面...
RMAN(Recovery Manager)是Oracle提供的强大备份与恢复工具,上述脚本可用于检查归档日志状态,删除过期日志,确保备份环境的健康与高效。 综上所述,这些脚本覆盖了Oracle DBA日常管理中的多个关键领域,包括但不...
8. **故障诊断脚本**(如`check_db_health.sql`):用于检查数据库的健康状况,例如检查表空间状态、检查无效的对象、监控数据库警告和错误日志等。 9. **数据装载脚本**(如`load_data.csv`):用于将大量数据从...
这些脚本可能包括创建和删除用户、权限分配、表空间管理、性能调优等操作。 总的来说,有效管理和维护Oracle数据库需要对SQL有深入的理解,包括查询、操作会话、监控锁以及处理异常情况。通过掌握这些技能,数据库...
- 索引用于加速查询,但需要定期检查其健康状况。可以通过脚本获取特定用户下的索引信息,展示索引名称、表名、唯一性等属性。 - 索引碎片可能降低查询效率。通过检查索引碎片,可以识别需要重组或重建的索引,...
Oracle数据库是世界上广泛使用的商业关系型数据库管理系统之一,它提供了丰富的数据字典视图以及动态...这些脚本和视图的使用有助于DBA及时诊断和解决数据库的性能问题,是维护Oracle数据库健康和稳定运行的关键工具。
"Oracle_DB_Check.sql"是一个可能包含各种SQL查询的巡检脚本,用于检查数据库的状态、配置、指标和日志等信息。通过执行这个脚本,运维人员可以获取数据库的关键信息,以便进行分析和调整。 1. **性能监控**:巡检...
- **案例三:自动化性能调整流程**:提出了一套自动化的性能优化方案,包括定期执行健康检查脚本、动态调整参数值等措施,以实现持续监控与自我修复机制。 #### 五、总结 《Oracle性能优化求生指南》不仅涵盖了...
- **DBA Module**:数据库管理员模块,提供数据库监控、健康检查、实例管理等日常DBA任务功能。 - **Database Monitor**:数据库监控器,提供实时的数据库活动监控。 - **Database Probe**:数据库探测器,用于深...
12. **数据库健康检查**:运行Oracle提供的健康检查脚本,如`utlrp.sql`(刷新PL/SQL编译缓存),确保所有对象都正确编译。 13. **数据库预警机制**:建立数据库警告系统,当出现异常时自动通知DBA,如使用`Alert ...