古今之成大事业、大学问者,必经过三种之境界:"昨夜西风凋碧树。独上高楼,望尽天涯路。"此第一境也。"衣带渐宽终不悔,为伊消得人憔悴。"此第二境也。"众里寻他千百度,蓦然回首,那人却在灯火阑珊处。"此第三境也。此等语皆非大词人不能道。然遽以此意解释诸词,恐为晏欧诸公所不许也。"        

    各位粉丝朋友,从8月13日开始,小麦苗打算花很长很长的一段时间来给大家分享有关自己整理的等待事件的学习笔记,有的内容来自于网络,大家有什么问题可以留言,欢迎交流。

    今天给大家分享的是等待事件中的User I/O 类等待事件之db file single write。

【等待事件】User I/O类 等待事件(2.4)--db file single write_等待事件等待事件历史文章

【等待事件】等待事件概述(1)--等待事件的源起和分类

●【等待事件】User I/O类 等待事件(2.1)--db file sequential read(数据文件顺序读)

【等待事件】User I/O类 等待事件(2.2)--db file scattered read(数据文件离散读)

【等待事件】User I/O类 等待事件(2.3)--db file parallel read

 

这个等待事件通常只发生在一种情况下,就是Oracle 更新数据文件头信息时(比如发生Checkpoint)。 

当这个等待事件很明显时,需要考虑是不是数据库中的数据文件数量太大,导致Oracle需要花较长的时间来做所有文件头的更新操作(checkpoint)。

 

SELECT *

FROM   v$event_name

WHERE  NAME IN ('db file single write');

【等待事件】User I/O类 等待事件(2.4)--db file single write_等待事件_02

这个等待事件有三个参数:

file#: 需要更新的数据块所在的数据文件的文件号。查询文件号的SQL语句是:SELECT * FROM v$datafile WHERE file# = <file#>;

block#:需要更新的数据块号,如果BLOCK号不是1,则可以通过如下查询查出Oracle正在写入的对象是什么:

SELECT  segment_name ,  segment_type ,                                           

owner , tablespace_name                          

FROM  sys.dba_extents                         

WHERE  file_id = <file#>                           

AND  <block#>                         

BETWEEN block_id AND block_id + blocks -1;

blocks需要更新的数据块数目(通常来说应该等于1),或Oracle写入file#的数据文件中从BLOCK#开始写入的BLOCK的数量。头一般来说都是BLOCK1,操作系统指定的文件头是BLOCK0,如果BLOCK号大于1,则表明Oracle正在写入的是一个对象而不是文件头。

 

 

 

About Me:小麦苗●李华荣

 

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

●【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】

 

 

本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请删除。