1、产生原因
db file sequential read这个是非常常见的I/O 相关的等待事件。表示发生了与索引扫描相关的等待。意味着I/O 出现了问题,通常表示I/O竞争或者I/O 需求太多。
db file parallel read这个事件表明会话正在并行执行多个读取的需求。
2、确定产生问题原因的对象
awr报告“SQL ordered by Reads”、v$sql视图中i/o较多的sql。
3、解决办法
(1)块读取通常是不可避免的,但可以通过最小化不必要的IO 以避免不必要的块读取。
(2)检查使用了不合适的索引扫描的SQL,优化SQL 语句。
(3)可能的话,加大SGA 中的数据库缓存池以缓冲更多的数据库表块和索引块。
(4)重新组织数据库表,比如使用export、import、数据泵或者CTAS 以使表有更好的聚集。
(5)通过awr报告中的“File I/O Statistics”部分或者v$filestat 视图找出热点的磁盘将读取较频繁的数据文件分散到不同的磁盘以均衡io。
(6)可以考虑rebuild索引。
(7)判断表是否适合分区以减少需要查询的数据块总数。