来自于: http://blog.csdn.net/47522341/archive/2009/07/22/4370491.aspx
五, 监控oracle的等待事件
select event,
sum(decode(wait_Time, 0, 0, 1)) "Prev",
sum(decode(wait_Time, 0, 1, 0)) "Curr",
count(*) "Tot"
from v$session_Wait
group by event
order by 4;
5.1 等待事件概述
Oracle的等待事件是衡量oracle运行状况的重要依据及指标.
等待事件的概念是在Oracle7.0.1.2中引入的,大致有100个等待事件。在Oracle 8.0中这个数目增加到了大约150个,在Oracle8i中大约有200个事件,在Oracle9i中大约有360个等待事件。
主要有两种类别的等待事件,即空闲(idle)等待事件和非空闲(non-idle)等待事件。
空闲等待事件是指Oracle正等待某种工作,比如用sqlplus登录之后,但没有进一步发出任何命令,此时该session就处于SQL*Net message from/to client等待事件状态,等待用户发出命令,任何的在诊断和优化数据库的时候,我们不用过多注意这部分事件。非空闲等待事件专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是我们在调整数据库的时候应该关注与研究的。
每一个等待事件都属于某一类, 下面给出了每一类等待事件的描述.
管理类: administrative
类等待事件是由于DBA的管理命令引起的,这些命令要求用户处于等待状态,比如,重建索引。
应用程序类:
此类等待事件是由于用户应用程序的代码引起的(比如:锁等待).
群集类:Cluster
此类等待事件和真正应用群集RAC的资源有关。(比如:gc cr block busy等待事件).
提交确认类:Commit
此类等待事件只包含一种等待事件--在执行了一个commit命令后,等待一个重做日志写确认(也就是log file sync).
并发类:Concurrency
此类等待事件是由内部数据库资源引起的,比如闩锁。
配置类:Configuration
此类等待事件是由数据库或实例的不当配置造成的,比如,重做日志文件尺寸太小,共享池的大小等。
空闲类:Idle
此类等待事件意味着会话不活跃,等待工作。比如,sql * net messages from client。
网络类:Network
和网络环境相关的一些等待事件,比如sql* net more data to dblink。
Other
此类等待事件通常比较少见。
调度类:Scheduler
Resource Manager related waits (for example, 'resmgr: become active')
系统I/O类:System I/O
此类等待事件通过是由后台进程的I/O操作引起的,比如DBWR等待,db file paralle write。
用户I/O类:User I/O
此类等待事件通常是由用户I/O操作引起的,比如db file sequential read。
5.3 等待事件详细描述
1, db file scattered read (DB文件分散读取)
这种情况通常与全表扫描相关. 当数据库进行全表扫描时, 基于性能的考虑, 数据会分散(scattered)读入buffer cache. 如果这个等待事件比较显著, 可能考虑查看对应的表有没有创建合适的索引.
然而这个等待事件并不一定就意味着性能低下, 在某些条件下oracle会主动使用全表扫描来替换索引扫描以提高性能, 这和访问的数据量有关, 在CBO下oracle会进行更为智能的选择, RBO下oracle更倾向于使用索引.
因为全表扫描到内存的数据块被置于LRU链表的冷端, 所以这些数据块将可能在较短时间内被置换出物理内存, 为了避免反复物理IO, 对频繁访问的较小的数据表,可以选择把他们cache到内存中.
当这个等待时间比较显著时, 可以结合v$session_longops动态性能视图来进行诊断, 该视图中记录了长时间(运行时间超过6秒)运行的事务, 可能很多是全表扫描操作.
Column
|
Datatype
|
Description
|
SID
|
NUMBER
|
Session identifier
|
SERIAL#
|
NUMBER
|
Session serial number
|
OPNAME
|
VARCHAR2(64)
|
Brief description of the operation
|
TARGET
|
VARCHAR2(64)
|
The object on which the operation is carried out
|
TARGET_DESC
|
VARCHAR2(32)
|
Description of the target
|
SOFAR
|
NUMBER
|
The units of work done so far
|
TOTALWORK
|
NUMBER
|
The total units of work
|
UNITS
|
VARCHAR2(32)
|
The units of measurement
|
START_TIME
|
DATE
|
The starting time of operation
|
LAST_UPDATE_TIME
|
DATE
|
Time when statistics last updated
|
TIME_REMAINING
|
NUMBER
|
Estimate (in seconds) of time remaining for the operation to complete
|
ELAPSED_SECONDS
|
NUMBER
|
The number of elapsed seconds from the start of operations
|
CONTEXT
|
NUMBER
|
Context
|
MESSAGE
|
VARCHAR2(512)
|
Statistics summary message
|
USERNAME
|
VARCHAR2(30)
|
User ID of the user performing the operation
|
SQL_ADDRESS
|
RAW(4)
|
Used with the value of the SQL_HASH_VALUE column to identify the SQL statement associated with the operation
|
SQL_HASH_VALUE
|
NUMER
|
Used with the value of the SQL_ADDRESS column to identify the SQL statement associated with the operation
|
QCSID
|
NUMBER
|
Session identifier of the parallel coordinator
|
2, db file sequential read(DB 文件顺序读取)
这一事件通常显示与单个数据块相关的读取操作, 比如对索引块的读取. 如果这个等待事件比较显著, 可能表示在多表连接中, 表的链接顺序存在问题, 可能没有正确的使用驱动表; 或者可能说明不加选择地进行索引.
3, free buffer (释放缓冲区)
这个等待事件表明系统正在等待内存中的可用空间,这说明当前Buffer 中已经没有Free 的内存空间。Free Buffer 等待可能说明DBWR 的写出速度不够,或者磁盘存在严重的竞争,可以需要考虑增加检查点、使用更多的DBWR 进程,或者增加物理磁盘的数量,分散负载,平衡IO。
4, buffer busy(缓冲区忙)
该等待事件表示正在等待一个以unshareable方式使用的缓冲区,或者表示当前正在被读入buffer cache。一般来说Buffer Busy Wait不应大于1%。检查缓冲等待统计部分(或V$WAITSTAT),看一下等待是否位于段头(Segment Header)。如果是,可以考虑增加自由列表(freelist,对于Oracle8i DMT)或者增加freelist groups(在很多时候这个调整是立竿见影的,在8.1.6之前,这个freelists参数不能动态修改;在8.1.6及以后版本,动态修改 feelists需要设置COMPATIBLE至少为8.1.6).
This view lists block contention statistics. This table is only updated when timed statistics are enabled.
Column
|
Datatype
|
Description
|
CLASS
|
VARCHAR2(18)
|
Class of the block
|
COUNT
|
NUMBER
|
Number of waits by this OPERATION for this CLASS of block
|
TIME
|
NUMBER
|
Sum of all wait times for all the waits by this OPERATION for this CLASS of block
|
select * from V$WAITSTAT
CLASS
|
COUNT
|
TIME
|
data block
|
318671
|
|
分享到:
相关推荐
### Oracle等待事件详解:User I/O 类型 #### 一、引言与概述 等待事件是Oracle数据库性能诊断的关键组成部分,它提供了关于数据库资源利用情况的深入见解。等待事件可以帮助我们理解应用程序或数据库操作在执行...
综上所述,Oracle的监控报警机制涵盖了多种工具和技术,从基础的警报日志到复杂的性能分析工具,再到灵活的邮件报警配置。理解和熟练运用这些功能,对于提升数据库的管理和维护效率至关重要。通过持续监控和适时的...
- **解析跟踪文件**:Oracle事件探查器读取这些跟踪文件,并将其转换为有用的信息,如执行计划、资源消耗、等待事件等。 - **生成报告**:根据解析结果,探查器可以生成详细的性能报告,包括慢查询分析、锁争用、I...
本文由郭吉平、张晓勇和王小星撰写,主要介绍了使用一系列命令和shell脚本来监控Oracle数据库的方法,旨在减轻DBA的重复性工作,并为性能调整提供技术支持。 首先,DBA可以通过执行特定命令来监控Oracle数据库的...
为了帮助读者更全面地理解Oracle数据库中的等待事件,本文提供了多个相关文章的链接,覆盖了不同类型的等待事件。这些资源对于深入学习Oracle数据库性能调优非常有帮助,具体包括: - **用户I/O类型**:分别介绍了...
2. **监控Oracle性能**:对于Oracle数据库,SystemTap可以用于监视SQL语句的执行时间、等待事件、I/O操作、锁争用等关键指标。例如,你可以编写SystemTap脚本来记录长时间运行的SQL,从而找出可能的性能问题源头。 ...
### Oracle数据库Latch与Mutex等待事件全面解析 #### 一、引言:理解Latch与Mutex 在Oracle数据库领域,了解Latch和Mutex等待事件对于优化数据库性能至关重要。这些等待事件通常指向了并发控制机制中的竞争问题,...
"SQLMonitor.rar" 提供了一种解决方案,专为监控Oracle SQL查询而设计,这对于优化数据库性能、排查错误以及确保系统稳定运行是极其有用的。在这个压缩包中,我们主要关注的是如何利用SQLMonitor工具来提升对Oracle ...
本资源“oracle数据执行监控工具(sqldbmon.exe)”是一个专门用于跟踪Oracle客户端数据执行的实用程序,它简化了对数据库操作的洞察过程,特别是对于那些可能不熟悉复杂数据库技术的用户。 `sqldbmon.exe`是一个...
这份"Oracle技术狂人整理出的文档"很可能是由一位深入研究Oracle技术的专业人士精心编撰的,涵盖了Oracle数据库的各个方面,包括但不限于体系结构、安装配置、性能优化、SQL查询、备份恢复、安全性以及故障排查等...
- **V$system_event**:提供关于系统级别的等待事件信息。 - `Event`: 事件名称。 - `Total_Waits`: 自实例启动以来对某个事件等待的总次数。 - `Total_Timeouts`: 某事件自实例启动以来等待超时的总次数。 - `...
- 数据库会话统计(如活跃会话、等待事件) - 表空间使用情况 - SQL执行效率与资源消耗 - 锁和死锁状况 - 日志文件写入速度与重做日志利用率 - 缓存命中率 - 数据库内存池分配与使用情况 通过上述指标的实时监控,...
3. **数据库活动**:监控会话、进程、锁、等待事件等,有助于了解数据库的工作负载和资源分配情况。 4. **数据安全**:监控登录尝试、权限变更和异常访问,确保数据安全。 5. **备份与恢复**:监控备份状态和恢复...
- 对于高Log File SYNC等待事件,需要进行深入诊断以找出瓶颈并解决。 6. Data Guard Fast Sync: Fast Sync是Data Guard的一个特性,它允许备用数据库几乎实时地应用重做数据,极大地减少了数据不一致的可能性。...
StatsPack是Oracle的一个统计包,它在早期的版本中称为SQL*Plus StatsPack,主要用于收集数据库的运行时统计信息,如执行的SQL语句、会话活动、等待事件等。通过这些数据,DBA可以识别性能瓶颈,优化数据库配置和SQL...
OWI是Oracle数据库中用于监控和诊断性能问题的重要工具,通过分析等待事件,帮助DBA(数据库管理员)理解系统资源的瓶颈所在。以下是对书中核心知识点的详细解读: 1. **Oracle Wait Interface (OWI)**:OWI是...
3. **监控等待事件**:等待事件分析可以帮助我们理解数据库等待的主要原因,例如,是否因为磁盘I/O延迟或锁定冲突导致了性能问题。 4. **对比性能变化**:通过对比不同的统计报告,可以了解数据库性能在升级、修改...
2. **SQL*Plus**:虽然主要用于SQL查询,但也可以用于获取特定的性能数据,如会话状态、等待事件等。 3. **SNMP监控**:利用简单网络管理协议(SNMP),可以集成到第三方监控系统中,实现跨平台的统一监控。 4. **...
在具体案例中,如果发现大量Cache Buffers Chain Latch等待事件,DBA应当进一步检查问题是否由单一Latch引发,这是通过等待事件的P1参数来确认的。P1参数会给出Latch的地址,如果大多数等待事件都指向同一个地址,则...