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

简介:

Db file parallel read
这是一个很容易引起误导的等待事件,实际上这个等待事件和并行操作(比如并行查询,并行DML)没有关系。 这个事件发生在数据库恢复的时候,当有一些数据块需要恢复的时候,Oracle会以并行的方式把他们从数据文件中读入到内存中进行恢复操作。
这个等待事件包含三个参数:
Files: 操作需要读取的文件个数。
Blocks: 操作需要读取的数据块个数。
Requests: 操作需要执行的I/O次数。

案例分析:

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
11 : 06 : 16  SYS@ prod>conn scott/tiger
Connected.
11 : 06 : 19  SCOTT@ prod> insert  into  emp1 select *  from  emp1;
286720  rows created.
Elapsed:  00 : 00 : 02.04
11 : 07 : 22  SCOTT@ prod>/
573440  rows created.
11 : 08 : 07  SYS@ prod>r
   1   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                                                  4449           .04
db file scattered read                                                   1650           .02
db file single write                                                       36           .39
db file async I/O submit                                                  133          8.69
db file parallel read                                                      37           .19
Elapsed:  00 : 00 : 00.02
11 : 08 : 20  SYS@ prod>r
   1   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                                                  7561           .03
db file scattered read                                                   1785           .02
db file single write                                                       36           .39
db file async I/O submit                                                  160         10.29
db file parallel read                                                      39           .19
Elapsed:  00 : 00 : 00.02

Db file parallel write
这是一个后台等待事件,它同样和用户的并行操作没有关系,它是由后台进程DBWR产生的,当后台进程DBWR向磁盘上写入脏数据时,会发生这个等待。
DBWR会批量地将脏数据并行地写入到磁盘上相应的数据文件中,在这个批次作业完成之前,DBWR将出现这个等待事件。如果仅仅是这一个等待事件,对用户的操作并没有太大的影响,当伴随着出现free buffer waits等待事件时,说明此时内存中可用的空间不足,这时候会影响到用户的操作,比如影响到用户将脏数据块读入到内存中。
当出现db file parallel write等待事件时,可以通过启用操作系统的异步I/O的方式来缓解这个等待。当使用异步I/O时,DBWR不再需要一直等到所有数据块全部写入到磁盘上,它只需要等到这个数据写入到一个百分比之后,就可以继续进行后续的操作。
这个等待事件有两个参数:
Requests: 操作需要执行的I/O次数。
Timeouts: 等待的超时时间。

案例分析:

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
1 、关闭ASYNC I/O:
11 : 25 : 47  SYS@ prod>show parameter sync
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
disk_asynch_io                       boolean     FALSE
tape_asynch_io                       boolean     TRUE
11 : 25 : 53  SYS@ prod>select event,TOTAL_WAITS,AVERAGE_WAIT  from  v$system_event
11 : 25 : 58    2   where  upper(event) like  'DB FILE%' ;
EVENT                                                            TOTAL_WAITS AVERAGE_WAIT
---------------------------------------------------------------- ----------- ------------
db file sequential read                                                  2036           .02
db file scattered read                                                    844           .01
db file single write                                                       27           .69
db file parallel write                                                     38          1.69
2 、用户进行事务操作
11 : 24 : 02  SCOTT@ prod>conn scott/tiger
Connected.
11 : 26 : 19  SCOTT@ prod>begin
11 : 26 : 38    2     for  in  1. .100000  loop
11 : 26 : 38    3     execute immediate  'insert into t1 values (' ||i|| ')' ;
11 : 26 : 38    4     end loop;
11 : 26 : 38    5     end;
11 : 26 : 38    6     /
11 : 24 : 06  TOM@ prod>conn tom/tom
Connected.
11 : 26 : 47  TOM@ prod>begin
11 : 26 : 57    2     for  in  1. .100000  loop
11 : 26 : 57    3     execute immediate  'insert into scott.t1 values (' ||i|| ')'  ;
11 : 26 : 57    4     end loop;
11 : 26 : 57    5     end;
11 : 26 : 57    6     /
11 : 22 : 41  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                                                  3216           .02
db file scattered read                                                    846           .01
db file single write                                                       27           .69
db file parallel write                                                     67          2.78
Elapsed:  00 : 00 : 00.02
3 、解决方法
11 : 22 : 42  SYS@ prod>show parameter sync
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
disk_asynch_io                       boolean     TRUE
tape_asynch_io                       boolean     TRUE
11 : 22 : 43  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                                                 11801           .05
db file scattered read                                                   1920           .03
db file single write                                                       54           .35
db file async I/O submit                                                  266          7.78
db file parallel read                                                      39           .19
'db file parallel write '  等待事件消失 !









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