Oracle Study之--Oracle等待事件(5)

简介:

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 : 26  SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT  from  v$system_event
15 : 03 : 31    2   where  upper(event) like  'DB FILE%' ;
EVENT                                                            TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read                                                  2093           .01
db file scattered read                                                    833           .02
db file single write                                                       27           .28
db file parallel write                                                      5         17.48
 
15 : 03 : 51  SYS@ prod>alter system checkpoint;
System altered.
 
15 : 03 : 35  SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT  from  v$system_event
   2 where  upper(event) like  'DB FILE%'
EVENT                                                            TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read                                                  2673           .01
db file scattered read                                                    833           .02
db file single write                                                       36           .55
db file parallel write                                                      7         14.73
Elapsed:  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 数量。

wKioL1PojsiSS90uAACoCCNugbM940.jpg
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 : 17  SCOTT@ prod>
   1 * select *  from  t1 order by  1
600000  rows selected.
Elapsed:  00 : 00 : 04.35
Execution 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  for  this  statement (level= 2 )
Statistics
----------------------------------------------------------
           7   recursive calls
           3   db block gets
        1355   consistent gets
        1823   physical reads
           0   redo size
    10809270   bytes sent via SQL*Net to client
      440512   bytes received via SQL*Net  from  client
       40001   SQL*Net roundtrips to/ from  client
           0   sorts (memory)
           1   sorts (disk)
      600000   rows processed
      
15 : 36 : 39  SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT  from  v$system_event
   2 where  upper(event) like  'DIRECT%'
EVENT                                                            TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
direct path read                                                          154           .03
direct path read temp                                                    1746             0
direct path write temp                                                     63           .98
Elapsed:  00 : 00 : 00.04
15 : 37 : 31  SYS@ prod>









本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1536003,如需转载请自行联系原作者
目录
相关文章
|
SQL 监控 Oracle
Oracle 数据库发生等待事件:enq: TX - row lock contention ,排查思路
Oracle 数据库发生等待事件:enq: TX - row lock contention ,排查思路
Oracle 数据库发生等待事件:enq: TX - row lock contention ,排查思路
|
11月前
|
Oracle 关系型数据库 数据库
Oracle-等待事件解读
Oracle-等待事件解读
44 0
|
SQL Oracle 关系型数据库
Oracle 等待事件研究:SQL*Net break/reset to client
SQL*Net break/reset to client事件是一个容易被误解的事件,这个事件看起来和网络有关,但实际上大多数情况下这个事件与网络无关。
372 0
Oracle 等待事件研究:SQL*Net break/reset to client
|
关系型数据库 数据库 Oracle