ITPub博客

首页 > 数据库 > Oracle > control file sequential read等待事件

control file sequential read等待事件

Oracle 作者:urgel_babay 时间:2016-02-29 17:10:35 0 删除 编辑
2015.06.03
    
    在看AWR时,经常看到control file sequential read等待事件,这些天也经常收集学习,刚刚在生产库中做了一个我认为空闲时段的报告,可还是有control file sequential read件,所以不得不承认系统磁盘的I/O瓶颈严重。
当数据库需要读取控制文件上的信息时到I/O等待,会出现这个等待事件,因为控制文件的信息是顺序写的,所以读取的时候也是顺序的,因此称为控制文件顺序读,它经常发生在以下情况。
(1)备份控制文件。
(2)RAC环境下不同实例之间控制文件的信息共享。
(3)读取控制文件的文件BLOCK头部信息。
(4)读取控制文件的其他信息。
等待的时间就是消耗在读取控制文件上的时间。
在V$SESSION_WAIT这个视图里面,这个等待事件有三个参数P1、P2、P3,其中P1代表正在读取的控制文件号,
select event,p1,p2,p3 from v$session_wait where event like '%control%';
通过下面的SQL语句可以知道究竟是具体是哪个控制文被读取:
SELECT * FROM X$KCCCF WHERE INDX = <file#>;

P2代表开始读取的控制文件BLOCK号,它的BLOCK大小和操作系统的BLOCK大小一样,通常来说是512K,也有些UNIX的是1M或者2M,P3代表会话要读取BLOCK的数量。
一般来说使用参数P1、P2来查询BLOCK,当然也可以包括参数P3,但是那样最终就变成了一个多BLOCK读取,因此我们一般都忽略参数P3。
如果这个等待事件等待的时间比较长,则需要检查控制文件所在的磁盘是否很繁忙,如果是,将控制文件移动到负载比较低,速度比较快的磁盘上去。如果系统支持异步I/O,
则启用异步I/O。对于并行服务器来说,如果这种等待比较多,会造成整个数据库性能下降,因为并行服务器之间的一些同步是通过控制文件来实现的。

总结相关的解决办法:
1、将控制文件移动到负载比较低,速度比较快的磁盘上去。
2、适当减少控制文件的数量,但是要保证控制文件的冗余符合你的需求
3、系统支持异步I/O,则启用异步I/O。







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

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

注册时间:2016-02-29

  • 博文量
    203
  • 访问量
    215648