Db file single write
这个等待事件通常只发生在一种情况下,就是Oracle 更新数据文件头信息时(比如发生Checkpoint)。
当这个等待事件很明显时,需要考虑是不是数据库中的数据文件数量太大,导致Oracle 需要花较长的时间来做所有文件头的更新操作(checkpoint)。
这个等待事件有三个参数:
File#: 需要更新的数据块所在的数据文件的文件号。
Block#: 需要更新的数据块号。
Blocks: 需要更新的数据块数目(通常来说应该等于1)。
案例分析:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 15:03:26SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT fromv$system_event15:03:312whereupper(event) like 'DB FILE%';EVENT                                                            TOTAL_WAITS AVERAGE_WAIT---------------------------------------------------------------- ----------- ------------db file sequential read                                                 2093.01db file scattered read                                                   833.02db file single write                                                      27.28db file parallel write                                                     517.4815:03:51SYS@ prod>alter system checkpoint;System altered.15:03:35SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT fromv$system_event  2* whereupper(event) like 'DB FILE%'EVENT                                                            TOTAL_WAITS AVERAGE_WAIT---------------------------------------------------------------- ----------- ------------db file sequential read                                                 2673.01db file scattered read                                                   833.02db file single write                                                      36.55db file parallel write                                                     714.73Elapsed: 00:00:00.01 | 
Direct path read
这个等待事件发生在会话将数据块直接读取到PGA当中而不是SGA中的情况,这些被读取的数据通常是这个会话私有的数据,所以不需要放到SGA作为共享数据,因为这样做没有意义。这些数据通常是来自于临时段上的数据,比如一个会话中SQL的排序数据,并行执行过程中间产生的数据,以及Hash Join,merge join产生的排序数据,因为这些数据只对当前的会话的SQL操作有意义,所以不需要放到SGA当中。
当发生direct path read等待事件时,意味着磁盘上有大量的临时数据产生,比如排序,并行执行等操作。或者意味着PGA中空闲空间不足。
这个等待事件有三个参数:
Descriptor address:  一个指针,指向当前会话正在等待的一个direct read I/O。
First dba: descriptor address 中最旧的一个I/O数据块地址。
Block cnt: descriptor address上下文中涉及的有效的buffer 数量。

Direct path write
这个等待事件和direct path read 正好相反,是会话将一些数据从PGA中直接写入到磁盘文件上,而不经过SGA。
这种情况通常发生在:
使用临时表空间排序(内存不足)
数据的直接加载(使用append方式加载数据)
并行DML操作。
这个等待事件有三个参数:
Descriptor address: 一个指针,指向当前会话正在等待的一个direct I/O.
First dba: descriptor address 中最旧的一个I/O数据块地址。
Block cnt: descriptor address 上下文中涉及的有效地 buffer 数量。
案例分析:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 15:37:17SCOTT@ prod>  1* select * fromt1 order by 1600000rows selected.Elapsed: 00:00:04.35Execution Plan----------------------------------------------------------Plan hash value: 2148421099-----------------------------------------------------------------------------------| Id  | Operation          | Name | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |-----------------------------------------------------------------------------------|   0| SELECT STATEMENT   |      |   838K|    10M|       |  4260(1)| 00:00:52||   1|  SORT ORDER BY     |      |   838K|    10M|    16M|  4260(1)| 00:00:52||   2|   TABLE ACCESS FULL| T1   |   838K|    10M|       |   276(2)| 00:00:04|-----------------------------------------------------------------------------------Note-----   - dynamic sampling used forthisstatement (level=2)Statistics----------------------------------------------------------          7recursive calls          3db block gets       1355consistent gets       1823physical reads          0redo size   10809270bytes sent via SQL*Net to client     440512bytes received via SQL*Net fromclient      40001SQL*Net roundtrips to/fromclient          0sorts (memory)          1sorts (disk)     600000rows processed     15:36:39SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT fromv$system_event  2* whereupper(event) like 'DIRECT%'EVENT                                                            TOTAL_WAITS AVERAGE_WAIT---------------------------------------------------------------- ----------- ------------direct path read                                                         154.03direct path read temp                                                   17460direct path write temp                                                    63.98Elapsed: 00:00:00.0415:37:31SYS@ prod> |