SQL语句响应时间分析
在Oracle9i数据库中查看SQL语句的响应时间就变得比较容易了,现在在Oracle10g中,DBA们拥有更多的工具可以帮助他们跟踪效率低下的数据库代码。以前可以用来查询的视图是V$SQLAREA,从Oracle9i开始,这个视图增加了ELAPSED_TIME和CPU_TIME两个列,这极大的有助于去确定实际用户的SQL语句的执行经历。(如果除以执行的次数列EXECUTIONS,那么将得到平均每次执行这个SQL语句所用的平均时间)在Oracle10g数据库中,V$SQLAREA视图中增加了6个新的和等待以及时间相关的列:
APPLICATION_WAIT_TIME
CONCURRENCY_WAIT_TIME
CLUSTER_WAIT_TIME
USER_IO_WAIT_TIME
PLSQL_EXEC_TIME
JAVA_EXEC_TIME |
这些新的列有助于确定很多信息,例如:一个存储过程中花费在PL/SQL代码和标准SQL执行上的时间的对比,以及一个SQL语句经历的任何详细的用户I/O等待。例如:下面的SQL语句能帮助找到前5位用户I/O等待最高的SQL语句:
select * from
(select sql_text,
sql_id,
elapsed_time,
cpu_time,
user_io_wait_time
from sys.v_$sqlarea
order by 5 desc)
where rownum < 6;
SQL_TEXT SQL_ID ELAPSED_TIME CPU_TIME USER_IO_WAIT_TIME
DECLARE job BINARY_INTEGER := :job;
next_date DATE := :mydate; broken BOOLEAN :
6gvch1xu9ca3g 11077912 747091 8593479
select /*+ index(idl_ub1$ i_idl_ub11) +*/ piece#,
length,piece from idl_ub1
$ wher cvn54b7yz0s8u 6455976 220128 6427409
select s.synonym_name object_name,
o.object_type from sys.all_synonyms s,
s fqmpmkfr6pqyk 11814078 6958760 3189450
select /*+ rule */ bucket, endpoint, col#,
epvalue from histgrm$ where obj#=:1 a db78fxqxwxt7r
2737680 193937 2689611
select /*+ index(idl_ub2$ i_idl_ub21) +*/ piece#,
length,piece from idl_ub2$
where 39m4sx9k63ba2 2322664 108100 2307700 |
当然,获取最消耗时间或者等待时间最长的SQL语句非常不错,但是同时也需要抓住其要点——在V$ACTIVE_SESSION_HISTORY视图中又一次出现的SQL语句。通过这个视图,能够找出具体什么等待时间延迟了SQL语句执行,连同实际的文件,对象以及阻塞的对象导致等待。
例如:设想已经找到一个特别的SQL语句,看上去在用户I/O等待时间方面极端的严重,那么可以执行下面的查询来得到等待时间中各个单独的等待事件,等待的文件,等待的对象:
select event,
time_waited,
owner,
object_name,
current_file#,
current_block#
from sys.v_$active_session_history a,
sys.dba_objects b
where sql_id = '6gvch1xu9ca3g' and
a.current_obj# = b.object_id and
time_waited <> 0;
EVENT TIME_WAITED OWNER OBJECT_NAME file block
db file sequential read 27665 SYSMAN MGMT_METRICS_1HOUR_PK 3 29438
db file sequential read 3985 SYSMAN SEVERITY_PRIMARY_KEY 3 52877 |
当然,也可以通过使用V$ACTIVE_SESSION_HISTORY视图中的历史数据的方式来限制一段特殊时间内的没有优化的SQL语句。问题在于Oracle10g数据库通过简化的数据字典视图把SQL语句的响应时间分析变得非常的简单,比起以前运用消耗时间的trace方法来说。
总结
DBA们和性能分析专家们管理Oracle10g数据库的性能时会发现在最新的Oracle旗舰数据库中已经把许多的响应时间数据做成了动态性能视图。这些统计信息将有助于迅速找出大型复杂数据库中的性能瓶颈所在。
相关推荐
### Oracle10g数据库优化详解 #### 一、基本概念 **1. 实例与数据库** - **实例**: 当数据库启动后,多个进程被加载到内存中并进行协同工作,这些进程及其状态共同组成了一个数据库实例。实例是运行时的概念,...
在本教程中,我们将深入探讨如何在Windows 7操作系统上安装Oracle 10g数据库。Oracle 10g是一款强大的关系型数据库管理系统,广泛应用于企业级数据存储和管理。在Win7环境下安装Oracle 10g可能面临一些挑战,但通过...
在32位的CentOS操作系统上安装和使用Oracle 10g数据库涉及多个步骤,包括前期的系统准备、软件包安装、配置修改以及数据库的图形化安装和管理。以下是详细的步骤说明: 1. **安装前的准备** - **下载Oracle 10g**...
书中详细讲解了 Real Application Clusters (RAC) 技术,它是 Oracle 提供的一种集群解决方案,允许多个服务器共享同一数据库,提高服务的持续性和响应速度。同时,还涉及了数据保护和恢复策略,如备份与恢复、...
Oracle 10G数据库性能监控与优化是数据库管理员在日常工作中必须掌握的关键技能。Oracle数据库的性能直接影响到应用程序的响应速度和整体系统效率。以下是一些核心知识点的详细解释: 1. **表空间使用率监控**: ...
Oracle 10g数据库是Oracle公司推出的一款关系型数据库管理系统,它在数据库管理领域具有广泛的应用,尤其在大型企业级应用中占据重要地位。Oracle 10g在性能、可用性、可管理性和安全性等方面都有显著提升,为数据库...
Oracle 10g数据库应用教程是关于Oracle 10g数据库管理的详细教程,本教程涵盖了Oracle 10g数据库管理的各个方面,包括企业管理器、Oracle Administration Assistant、网络配置工具、SQL*Plus和iSQL*Plus等。...
《精通Oracle 11g数据库管理》是一本专注于Oracle数据库技术的专业书籍,出版于2009年。...通过阅读和实践书中的案例,读者可以全面掌握Oracle 11g数据库的管理和运维技巧,提升在企业IT环境中的专业技能。
Oracle 10g数据库在安全性与身份管理方面展现了强大的功能,为企业的数据保护提供了坚实的基础。其中,Oracle互联网目录(OID)是一个关键组件,它在Oracle数据库10g上运行,能够支持大规模的目录信息存储,无论是...
Oracle 10g数据库性能优化与分析是针对数据库在日常生活各个领域的广泛应用中,尤其是在面对数据量不断增大和并发用户数量增多时,如何提高系统效率、降低响应时间和提升吞吐量的关键问题。Oracle数据库作为关系型...
总结,Oracle 10g数据库管理系统为数据库管理员和开发者提供了强大的工具和特性,从高性能的数据存储到灵活的应用系统开发,再到可靠的灾难恢复机制,都是其突出亮点。理解并熟练掌握这些知识点,对于在Oracle环境中...
在性能方面,Oracle 10g表现卓越,例如,在Transaction Processing Council的测试中,Oracle数据库10g在16个节点的4路HP Integrity rx5670上达到了1,184,893 tpmC,而成本仅为$5.52/tpmC,相比64路HP Integrity ...
Oracle 10g是一款历史悠久但仍然具有广泛影响力的数据库管理系统,尤其在那些运行32位操作系统或者需要兼容旧系统的环境中。本资源提供了Oracle Database 10g的32位版本,适用于那些不能或不想升级到更高版本的用户...
Oracle 10g数据库是Oracle公司推出的一款关系型数据库管理系统,它在数据库管理、性能优化、安全性、可扩展性等方面有着显著的特点。本教程将针对初学者,详细讲解Oracle 10g的基础知识,帮助你掌握数据库的核心概念...
在Oracle10G数据库管理中,数据失败是常见的问题,它不仅影响数据库的稳定性和数据的完整性,还可能导致业务中断。根据失败的性质,Oracle10G将数据失败分为多种类型,包括语句失败、用户进程失败、用户错误、实例...
【Oracle 10g数据库管理工具详解】 Oracle 10g是Oracle公司推出的数据库管理系统,其提供了多种强大的数据库管理工具,使得数据库的管理和维护变得更加高效和便捷。在本章中,我们将深入探讨Oracle 10g的主要管理...
在静默安装Oracle 10G数据库软件之前,需要确保系统中没有已安装的Oracle实例,可以通过查看/etc/oraInst.loc文件是否存在来判断。如果文件不存在,说明没有安装过Oracle。接下来,需要创建专门用于Oracle的用户和组...