oracle中等待事件查询,Oracle Study之--Oracle等待事件(3)

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

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

案例分析: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、关闭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 i 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 i 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 ' 等待事件消失 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值