oracle log file switch (checkpoint incomplete) 等待事件

这个等待事件在繁忙的系统很容易出现,要想解决这个问题就得了解为啥会出这个问题。数据库

说到redolog就必须得说下oracle 日志体系,oracle 默认必须有3组日志,每组日志是循环写的,oracle在写入数据的时候确定是先写日志后写数据文件,一旦写日志出现了等待,那么系统确定会很是慢,影响很大。redolog日志比较特殊,它是顺序写入的,因此oracle官方也不建议把redolog方在asm条带化存储中。咱们知道在文件系统层面的顺序写对应磁盘就是随机IO,因此SSD盘对随机IO提高效果不大,条带化的存储对顺序写的文件效果也不大。oracle

回到oracle数据库上来,若是数据库开了归档,那么一条数据从redlog buffer写到redolog,这个过程期间也会产生等待,最典型的就是redolog sync 和redolog paralle write 。日志

 

Log File Sync是从提交开始到提交结束的时间。Log File Parallel Write是LGWR开始写Redo File到Redo File结束的时间。  Log File Parallel Write 也会影响 Log File Sync。 这边log file sync 平均等待时间是 1MS, 后文中Log File Parallel Write 也是1ms 所以判断系统IO没有问题。blog

 若是 此时Log File Parallel Write 平均等待时间件很高, 这种状况通常是IO出问题了,致使log 写到磁盘缓慢。 进程

 若是 Log File Sync的平均等待时间很长,可是 Log File Parallel Write 时间很短,这种状况查通常检查2点。事件

 

 1 commit的进程和lgwr以前经过CPU调度来协调的, 会不会CPU资源紧张致使协调过慢? 若是是的。那就会伴随逻辑读高,块忙, latch....等待事件反应CPU吃紧, 这份AWR报告中并无这样的特征。 另外host cpu idle 上面也没有反应CPU吃紧。资源

2 若是日志缓冲区过小,致使一次写入的量很大,也会致使这种现象。it

经过AWR报告,已经系统系统查询并非以上几点。asm

此时不妨停下来思考一下,什么是log file switch (checkpoint incomplete)?file

log file switch (checkpoint incomplete)指的是当redo须要向下一组redo group切换的时候,发现下组日志是active的,也就是说下组日志中对应的一些buffer cache中的脏块还没有写入到数据文件中,所以必须等待这些脏块被完毕后,才能够复用下一组redo group。若是数据库开了归档,那么这时候这个日志组必须得先写归档才能被覆盖,这个时候数据库就处于假死状态。

解决这个问题通常有几个方法:

一、增长redolog group 数量;

二、增长dbwr的进程;

三、提升磁盘IO能力;

相关文章
相关标签/搜索