等待事件:control file parallel write

本文探讨了Oracle数据库中的controlfileparallelwrite等待事件,解释了该事件的原因,包括日志文件过小、DML操作频繁及磁盘IO问题等,并提供了通过查询V$SESSION_EVENT等视图来定位引发该事件的进程的方法。

转自作者:dotaddjj

control file parallel write:控制文件写入等待

  •       控制文件记录着db的scn、数据文件的scn、当前redo log号、归档日志信息、备份集信息等等。很多信息都需要定期更新,因此很有可能会引起control file parallel write等待事件。
  1. 日志文件过小,或者dml操作过多,导致日志切换太快,每次日志切换都需要进行检查点,记录相应的日志切换的信息。
  2.  增量检查点发生,也会记录scn信息和检查点到控制文件中,10g的自动增量检查点会记录也会更新一次控制文件中记录的RBA信息。
  3. nologging下频繁更新数据文件,对数据文件在nologging选项下执行修改工作时,为了修改unrecoverable scn需要更新controlfile。
  4. 磁盘IO问题,可以考虑把controlfile分开存储在磁盘上。

 

  •        如何判断什么进程引起的control file parallel write事件,其实之前一直用v$session_wait查看当前的session的等待,这里可以用v$session_event视图首先查看出导致control file parallel write等待事件的sid,然后对应v$session找到paddr,接着对应v$process找到导致时间的后台进程,很多情况下我们会发现两个进程,LGWR和CKPT,日志切换和检查点是导致control file parallel write等待事件最主要的原因,相应的解决方法了就是增加日志组和日志大小,对controlfile分开存储到磁盘等。

 

  • 记录db启动到现在的等待事件的信息,其中的total_waits等待次数,time_waited等待事件,average_wait平均等待一次的时间,这些度量参考值在很多视图中都会用到,理解其中的意思。

 

SQL> select event,total_waits,total_timeouts,time_waited,average_wait from v$system_event where event='control file parallel write';

 

EVENT TOTAL_WAITS     TOTAL_TIMEOUTS      TIME_WAITED       AVERAGE_WAIT

-------------------------------     ---------------------------      --------------------       ------------------------ 

control file paralle              4966                               0                             25830 5.2

l write

SQL> select sid from v$session_event where event='control file parallel write';

 

SID

----------

20

33

34

35

44

45

 

6 rows selected

 

SQL> select paddr from v$session where sid in (20,33,34,35,44,45);

 

PADDR

--------

33D34610

33D38170

33D34C00

33D351F0

33D304C0

33D2FED0

 

6 rows selected

 

SQL> select program from v$process

where addr in ('33D34610','33D38170','33D34C00','33D351F0','33D304C0','33D2FED0');

2 /

 

PROGRAM

----------------------------------------------------------------

PSEUDO

ORACLE.EXE (PMON)

ORACLE.EXE (PSP0)

ORACLE.EXE (MMAN)

ORACLE.EXE (DBW0)

ORACLE.EXE (LGWR)

ORACLE.EXE (CKPT)

ORACLE.EXE (SMON)

ORACLE.EXE (RECO)

ORACLE.EXE (CJQ0)

ORACLE.EXE (MMON)

ORACLE.EXE (MMNL)

......

  •        看来这些进程都有可能引起control file parallel write等待,不过要申明的是这个是本机的测试库,在一个繁忙的生产系统中我发现引起control file paralle write等待事件的都是后台进程ckpt和lgwr,出现此等待事件很正常,但是如果影响了db性能就需要酌情调整了,跟控制文件相应的还有control file sequential read和control file heartbeat等待事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值