等待事件 wait event
衡量数据库状况, 优化数据库等
当一个进程连接到数据库后, 进程所经历的种种等待就开始被记录, 并且通过一系列的性能视图进行展示, 通过等待事件用户可以很快发现数据库的性能瓶颈, 从而进行针对性能的优化和分析.
v$event_name
oracle 等待事件主要分两类: 空闲等待(idle) 和 非空闲等待(non-idle)
空闲等待: 指 oracle 正等待某种工作, 在诊断和优化数据库的时候, 不用过多注意这部分事件
非空闲等待: 专门针对oracle的活动, 指数据库任务或应用运行过程中发生的等待, 这些等待事件是, 在调整数据库时应该关注和研究的.
从等待事件发现瓶颈
v$session, 记录当前连接的 session 信息
v$session_wait 记录当前数据库连接的活动session正在等待的资源或事件信息
v$system_event 记录数据库自启动以来所有等待事件汇总
v$sqltext, 通常数据库出现瓶颈时, 可以通过v$session_wait找到正在等待资源的session, 通过session的sid, 联合v$session 和 v$sqltext视图就可以捕获这些 session 正在执行的 sql 语句.
例如:
1. select sid, event, p1, p1 text from v$session_wait;
2. select sql_text
from v$sqltext a
where a.hash_value = (select sql_hash_value from v$session b where b.sid = ‘&sid’)
order by piece ASC
3. 使用该用户连接, 检查sql 执行计划
set autotrace trace explain
执行该(有问题的) sql 语句
发现问题, 比如全表扫描 等, 进一步分析原因, 比如在某列上没有索引导致, 处理问题
4. 检查问题是否解决完成
select sid, event, p1, p1 text from v$session_wait;
10g 以后, 新增加了 v$session_wait_history 视图, 这样就可以在查看前一天是否有比较严重的等待事件, 也可以对比前一天和当天等待事件的不同.
ASH 新特性(根本性变革)
如果说 v$session_wait_history 是一小步, 那么 ASH 则是一大步, ASH 以 v$session为基础, 每秒钟采样一次, 记录活动会话等待事件.
顶级等待事件
利用 v$system_event 视图
select * from (select event, time_waited from v$system_event order by time_waited desc)
where rownum < 10;
查询最严重的前10个等待事件, 然后找出问题根源进行处理.(statspack Report 中的 Top 5 就是参考的这个)
重要等待事件
db file sequential read 数据文件顺序读取, User I/O 类, 如果这个等待事件比较显著, 可能表示在多表连接中, 表的连接顺序存在问题
db file scattered read 数据文件离散读取, User I/O 类,通常大量的 db file scattered read 等待可能意味着应用问题或索引缺失.
direct path read/write 直接路径读/写, 磁盘排序等会触发, 临时表空间使用肯定频繁(排序么肯定使用临时表空间), 这时候可以适当增大临时表空间, 修改参数.
enqueue: 队列等待, 对共享资源的锁定机制, 例如: enq: PW – flush prewarm buffers
latch free: 闩锁释放
等待事件 wait event的更多相关文章
- 【Oracle】等待事件详细内容
一.等待事件的相关知识 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不 ...
- oracle等待事件相关查询
--------------------------查询数据库等待时间和实际执行时间的相对百分比--------------------- select * from v$sysmetric a ...
- 【Oracle】等待事件之 V$SESSION_WAIT
(1)-V$SESSION_WAIT 这是一个寻找性能瓶颈的关键视图.它提供了任何情况下session在数据库中当前正在等待什么(如果session当前什么也没在做,则显示它最后的等待事件).当系统存 ...
- DBA_Oracle Event等待事件分析(概念)
2014-12-18 Created By BaoXinjian
- Oracle Tuning 基础概述01 - Oracle 常见等待事件
对Oracle数据库整体性能的优化,首先要关注的是在有性能问题时数据库排名前几位等待事件是哪些.Oracle等待事件众多,随着版本的升级,数量还在不断增加,可以通过v$event_name查到当前数据 ...
- ORACLE等待事件:enq: TX - row lock contention
enq: TX - row lock contention等待事件,这个是数据库里面一个比较常见的等待事件.enq是enqueue的缩写,它是一种保护共享资源的锁定机制,一个排队机制,先进先出(FIF ...
- ORACLE等待事件: log file parallel write
log file parallel write概念介绍 log file parallel write 事件是LGWR进程专属的等待事件,发生在LGWR将日志缓冲区(log_buffer)中的重做日志 ...
- truncate表hang住(等待时间较长),出现enq:RO fast object reuse等待事件
有一个应用truncate表等待了一晚上,一个定时任务,跑了几年了,今天早上来发现昨晚没有执行完成,hang住了,查询发现等待事件 fast object reuse. 10.2.0.4的库 Bug ...
- Oracle等待事件db file parallel read
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file ...
随机推荐
- iOS - App 与外设间的通信方式
1.前言 一般 iOS 开发者做 App 开发大部分时候都是通过 Http(s) 请求跟后台服务器打交道,做一些信息展示和用户交互.很少涉及到去跟外部硬件设备连接的开发.随着近年来车联网和物联网的兴起 ...
- 基于UDP协议的网络程序
一.下图是典型的UDP客户端/服务器通讯过程 下面依照通信流程,我们来实现一个UDP回射客户/服务器 #include <sys/types.h> #include <sys/so ...
- Linux时钟
一.前言 时钟或者钟表(clock)是一种计时工具,每个人都至少有一块,可能在你的手机里,也可能佩戴在你的手腕上.如果Linux也是一个普通人的话,那么她的手腕上应该有十几块手表,包括:CLOCK_R ...
- python标准库介绍——1 os详解
== os 模块 == ``os`` 模块为许多操作系统函数提供了统一的接口. 这个模块中的大部分函数通过对应平台相关模块实现, 比如 ``posix`` 和 ``nt. os`` 模块会在第一次导入 ...
- VS2012/13中即将增加InstallShield升级版
对于Visual Studio 2012去掉了前作中的安装程序(Installer)项目模板,许多开发者都感到非常失望.这个流行的项目类型为开发者们提供了若干选项:除了InstallShield LE ...
- linux安装rzsz(lrzsz)
lrzsz是一个unix通信套件提供的,X,Y和ZModem文件传输协议,可以用在Windows与linux系统之间的文件传输,体积小速度快,可以与xshell工具配合使用. (1)在线安装 yum ...
- 【Android】3.15 短串分享功能
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 短串分享是指,用户搜索查询后得到的每一个地理位置结果将会对应一条短串(短链接),用户可以通过短信.邮 ...
- Git的4个阶段的撤销更改
虽然git诞生距今已有12年之久,网上各种关于git的介绍文章数不胜数,但是依然有很多人(包括我自己在内)对于它的功能不能完全掌握.以下的介绍只是基于我个人对于git的理解,并且可能生编硬造了一些不完 ...
- 利用ItextSharp 生成PDF文档改进版
导入的ItextSharp.dll一定要是较高的版本 数据库表结构 生成的PDF样式 代码: namespace WebPDF { public partial class _Default : Sy ...
- nyoj138 哈希的简单应用(查找)
找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...