Oracle Event

Posted on 2012-11-26 19:32  bingfeng  阅读(652)  评论(0编辑  收藏  举报

1.latch free闩锁等待事件

    当进程想获取锁存器时由于该锁存器被其他进程持有,此时会产生latch free等待事件。这些由于有些数据只能被一个人持有,oracle使用闩锁来保护数据结构,一次只有一个人修改和检查数据结构,其他需要访问数据结构的进程必须等到他们获取闩锁。这跟排队不同的是,请求锁存器的进程不需要在队列中等待。如果闩锁获取失败,则会等待一小会再次请求闩锁,这一小段等待事件成为“自旋(spin)”。如果多次自旋重复(spin iterations)之后还没获取到闩锁,则进程就会休眠一段事件,然后再尝试获取。

  常见的锁存器有:cache buffer chains(高速缓存缓冲区链)、library cache(高速缓存)和shared pool(共享池)

在session_wait中event=latch freee主要看的参数P1,P2,P3

p1进程等待的闩锁地址

P2闩锁号,同v$latchname.latch#

P3 尝试的次数;显示进程视图获取闩锁的次数计数器

 

首先查看哪个闩锁竞争激励:

select v.name,v.gets,v.misses,v.immediate_gets,v.immediate_misses,v.sleeps from  v$latch v order by sleeps desc;

  (1)若是shared pool锁存器或library cache锁存器的争用激烈,则说明解析有问题,估计就是硬解析较多。

select a.sid,c.username,b.name,a.value,round((sysdate-c.logon_time)* 24) hours_connected from v$sesstat  a,v$statname b,v$session c

where c.sid=a.sid and a.statistic#=b.statistic# and a.value>0 and b.name=’parse count(hard)’ order by a.vallue desc;

Copyright © 2024 bingfeng
Powered by .NET 8.0 on Kubernetes