转自作者:dotaddjj
control file parallel write:控制文件写入等待
- 控制文件记录着db的scn、数据文件的scn、当前redo log号、归档日志信息、备份集信息等等。很多信息都需要定期更新,因此很有可能会引起control file parallel write等待事件。
- 日志文件过小,或者dml操作过多,导致日志切换太快,每次日志切换都需要进行检查点,记录相应的日志切换的信息。
- 增量检查点发生,也会记录scn信息和检查点到控制文件中,10g的自动增量检查点会记录也会更新一次控制文件中记录的RBA信息。
- nologging下频繁更新数据文件,对数据文件在nologging选项下执行修改工作时,为了修改unrecoverable scn需要更新controlfile。
- 磁盘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等待事件。