等待事件: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等待事件。
Oracle数据库中的等待事件是指在数据库运行时,由于某些资源的限制,导致进程需要等待事件。以下是常见的33个Oracle等待事件: 1. latch free - 等待获取latch资源的进程。 2. CPU time - 等待CPU处理时间。 3. log file sync - 等待日志文件同步完成。 4. buffer busy waits - 等待访问繁忙的数据缓冲区。 5. db file sequential read - 等待从磁盘读取数据文件的读取操作完成。 6. db file scattered read - 等待从磁盘读取散乱的数据块的读取操作完成。 7. log file parallel write - 等待并行写入日志文件的操作完成。 8. direct path read - 等待直接路径读取完成。 9. SQL*Net message from client - 等待来自客户端的SQL*Net消息。 10. log buffer space - 等待空闲的日志缓冲区空间。 11. control file parallel write - 等待并行写入控制文件的操作完成。 12. db file parallel write - 等待并行写入数据文件的操作完成。 13. enqueue - 等待获取enqueue资源的操作完成。 14. db file async I/O submit - 等待异步I/O提交的操作完成。 15. db file async I/O complete - 等待异步I/O完成的操作。 16. direct path write - 等待直接路径写入操作完成。 17. SQL*Net more data to client - 等待传输更多SQL*Net数据给客户端。 18. redo log space requests - 等待空闲的重做日志空间。 19. buffer deadlock - 等待缓冲区死锁解除。 20. db file checkpoint completion - 等待数据文件检查点完成。 21. db file parallel read - 等待并行读取数据文件的操作。 22. latch: cache buffers chains - 等待获取缓冲区链锁的进程。 23. read by other session - 等待其他会话读取数据。 24. control file sequential read - 等待从控制文件读取数据。 25. ASM background process - 等待ASM后台进程操作完成。 26. latch: In-Memory undo latch - 等待获取In-Memory undo latch锁的进程。 27. cell single block physical read - 等待从Cell服务器读取单个块的物理读取操作完成。 28. library cache: mutex X - 等待获取库缓存互斥锁的进程。 29. PX Deq: Table Q Normal - 等待并行执行查询操作。 30. direct path read temp - 等待从临时文件读取数据的直接路径读取操作完成。 31. PX Deq Execution Msg - 等待并行执行消息处理。 32. PX Deq Credit: send blkd - 等待并行执行接收处理。 33. PX Deq: reap credit - 等待并行执行回收资源的操作完成。 以上是常见的33个Oracle等待事件,了解这些事件对于排查和优化数据库性能非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值