主页 > 知识库 > 数据库 > Oracle >

Oracle 常见的33个等待事件(6)

来源:网络 作者:liyf0371 发表于:2012-09-04 10:04  点击:
关于enqueue 可以参考如下的连接: Wait Events - Enqueue Waits http://www.toadworld.com/KNOWLEDGE/KnowledgeXpertforOracle/tabid/648/TopicID/WE1/Default.aspx Free buffer waits 当一个会话将数据块从磁盘读
 
 
 
关于enqueue 可以参考如下的连接:
                Wait Events - Enqueue Waits
                http://www.toadworld.com/KNOWLEDGE/KnowledgeXpertforOracle/tabid/648/TopicID/WE1/Default.aspx
 
 
  1.  Free buffer waits
当一个会话将数据块从磁盘读到内存中时,它需要到内存中找到空闲的内存空间来存放这些数据块,当内存中没有空闲的空间时,就会产生这个等待;除此之外,还有一种情况就是会话在做一致性读时,需要构造数据块在某个时刻的前映像(image),此时需要申请内存来存放这些新构造的数据块,如果内存中无法找到这样的内存块,也会发生这个等待事件。
 
当数据库中出现比较严重的free buffer waits等待事件时,可能的原因是:
data buffer 太小,导致空闲空间不够
内存中的脏数据太多,DBWR无法及时将这些脏数据写到磁盘中以释放空间
 
这个等待事件包含2个参数:
            File# 需要读取的数据块所在的数据文件的文件号。
            Block# 需要读取的数据块块号。
 
 
  1.  Latch free
在10g之前的版本里,latch free 等待事件代表了所有的latch等待,在10g以后,一些常用的latch事件已经被独立了出来:
SQL> select name from v$event_name where name like 'latch%' order by 1;
NAME
----------------------------------------------------------------
latch activity
latch free
latch: Change Notification Hash table latch
latch: In memory undo latch
latch: MQL Tracking Latch
latch: PX hash array latch
latch: Undo Hint Latch
latch: WCR: processes HT
latch: WCR: sync
latch: cache buffer handles
latch: cache buffers chains
latch: cache buffers lru chain
latch: call allocation
latch: change notification client cache latch
latch: checkpoint queue latch
latch: enqueue hash chains
latch: gc element
latch: gcs resource hash
latch: ges resource hash list
latch: lob segment dispenser latch
latch: lob segment hash table latch
latch: lob segment query latch
latch: messages
latch: object queue header operation
latch: parallel query alloc buffer
latch: redo allocation
latch: redo copy
latch: redo writing
latch: row cache objects
latch: session allocation
latch: shared pool
latch: undo global data
latch: virtual circuit queues
已选择33行。
 
所以latch free 等待事件在10g以后的版本中并不常见,而是以具体的Latch 等待事件出现。
 
这个等待事件有三个参数:
            Address: 会话等待的latch 地址。
            Number latch号,通过这个号,可以从v$latchname 视图中找到这个latch 的相关的信息。
                                    SQL> select * from v$latchname where latch#=number;
            Tries: 会话尝试获取Latch 的次数。
 
 
  1.  Library cache lock
这个等待时间发生在不同用户在共享中由于并发操作同一个数据库对象导致的资源争用的时候,比如当一个用户正在对一个表做DDL 操作时,其他的用户如果要访问这张表,就会发生library cache lock等待事件,它要一直等到DDL操作完成后,才能继续操作。
 
这个事件包含四个参数:
      Handle address: 被加载的对象的地址。
Lock address锁的地址。
Mode被加载对象的数据片段。
Namespace被加载对象在v$db_object_cache 视图中namespace名称。
 
 
  1.  Library cache pin
这个等待事件和library cache lock 一样是发生在共享池中并发操作引起的事件。通常来讲,如果Oracle 要对一些PL/SQL 或者视图这样的对象做重新编译,需要将这些对象pin到共享池中。 如果此时这个对象被其他的用户特有,就会产生一个library cache pin的等待。
 
这个等待事件也包含四个参数:
                  Handle address: 被加载的对象的地址。
Lock address锁的地址。

有帮助
(0)
0%
没帮助
(0)
0%