ITPub博客

首页 > 数据库 > Oracle > 常见等待事件

常见等待事件

原创 Oracle 作者:xj951423274 时间:2015-11-12 00:20:13 0 删除 编辑
1,buffer busy waits
    该等待事件的产生仅说明一个会话在等待一个buffer数据块。常见的原因有
    a,当一个会话准备修改一个数据块时,其被另一个会话修改;
    b,当一个会话读取一个数据块时,其被另一个会话读入到内存中;
    c,在一个会话修改数据块时,该数据块上有一个排他锁其他会话不能修改该数据块(即使修改的不是当前会话修改的数据)
   ,可以一致性读。等待前面的修改完后才可以修改。当多个会话都需要对一个数据块做修改时,就造成了块的争用俗称热块。
    解决办法:采用ASSM段自动管理,或者增加freelist组
   d,当热块为索引块时,可rebuild或reverse 反向键索引解决;

2,buffer latch
   内存中的数据块存放的位置记录在一个hash列表cache buffer chains 中。当一个会话需要访问数据块时,首先搜索hash列表获取数据块的地址来访问。在会话访问该列表时,需要获取一个latch,保证数据的完整性。
   buffer latch 等待的原因:buffer chains太长,导致会话搜索列表话费时间太长,其他会话等待latch;

3,control file parallel write
   有多个控制文件,在信息同步写控制文件时,发生该事件。
   原因:a,日志频繁切换,使控制文件信息频繁更新;
      b,系统I/O出现瓶颈,出现I/O等待;
   解决:适当增大日志文件大小来降低切换频率,降低controlfile拷贝数量分布到其他磁盘

4,control file sequential read
   控制文件顺序读  通常发生在以下情况:
    a,备份控制文件
     b,RAC环境下不同实例之间控制文件的信息共享
     c,读取控制文件的头信息或其他信息

5,free buffer waits
  原因:a,data buffer 空间不够 b,data buffer中脏数据块太多,DBWR写入太慢。

6,library cache lock
  多个session在共享池中并发操作,导致资源争用。

7,library cache pin
   发生在共享池,oracle对一些大的PL/SQL或者视图对象编译时,需将这些对象pin到共享池中,若此时对象被其他用户持有,则发生该等待。
     

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28275505/viewspace-1829824/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-07-29

  • 博文量
    22
  • 访问量
    29249