等待事件

本文介绍如何通过Oracle数据库的v$session_wait等视图分析常见等待事件,包括dbfile读写、全表扫描、队列等待、闩锁等待等,并提供了具体的SQL查询语句帮助定位性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

v$event_name event的定义

查询等待事件:v$session_wait,v$system_wait,v$session_wait_history

SELECT SID,EVENT FROM V$SESSION_WAIT;

查看各种事件的归类:

Select name,wait_class from v$event_name ;

db file sequential read :出现原因可能在多表连接中,表的连接顺序存在问题,没有正确使用驱动表;或者可能索引使用存在问题。

db file scattered read :可能和全表扫描或快速全索引扫描有关,大量此事件可能意味着应用问题或索引缺失。

查询全表扫描的对象:

SELECT DISTINCT object_name, object_owner

           FROM v$sql_plan p

          WHERE p.operation = 'TABLE ACCESS'

            AND p.options = 'FULL'

            AND object_owner = 'ANTICELLDA';

查询全索引扫描对象:

SELECT DISTINCT object_name, object_owner

           FROM v$sql_plan p

          WHERE p.operation = 'INDEX'

            AND p.options = 'FULL SCAN'

            AND object_owner = 'ANTICELLDA';

查询全表扫描的sql语句:

SELECT   sql_text

    FROM v$sqlteXt t, v$sql_plan p

   WHERE t.hash_value = p.hash_value

     AND p.operation = 'TABLE ACCESS'

     AND p.options = 'FULL'

ORDER BY p.hash_value, t.piece;

 

Direct path read/write:直接路径读/写,通常发生在Oracle直接读数据到PGA/PGA写数据到数据文件或临时文件,这个操作不经过SGADSS决策支持系统Decision Support System)系统中存在大量是正常的。OLTP联机事务处理on-line transaction processing)则意味着系统应用存在问题,导致大量的磁盘排序读取操作,临时表空间使用频繁。V$tempseg_usage, v$tempfile

 

Enqueue :队列等待,一种保护共享资源的锁定机制,如果此事件比较显著,需要进一步追踪哪个类别的锁定。常见的有ST,HW,TX,TM等。ST Enqueue用于空间管理和字典管理的表空间(DMT)的区间分配,在DMT中,典型的是uet$fet$数据字典的争用。

 

Latch free:闩锁释放等待,说明有进程正在等待某个latch 被释放。Latch 用于保护SGA 中共享内存结构,防止被多个用户同时访问。Latch通常是操作系统利用内存中的某个位置,通过设置变量为0或非0来表示latch 是否已经被取得。v$latch,latch分为 willing-to-wait,immediate。前者表示请求的latch不能立即得到,请求进程等待一段时间后再次发出请求,进程重复执行此过程直到得到latch。后者表示请求进程不会等待,而是继续执行下去。

对于willing-to-waitlatch,过程如下:

 

http://files.cnblogs.com/yifan268/latch.pdf 

查询长时间运行的事务,可能很多是全表扫描,注意opname

Select * from v$session_longops;

转载于:https://www.cnblogs.com/yifan268/archive/2008/07/30/1256657.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值