假设数据库存在两个日志组log1和log2,首先,-->log1-->log2-->log1,此时(log2切换到log1)触发checkpoint,该checkpoint will flush dirty block to datafile,从而触发DBWn书写dirty buffer,等到log1覆盖的dirty block全部被写入datafile后才能使用log1(循环使用),如果DBWn写入过慢,LGWR必须等待DBWn完成,则这时会出现“checkpoint not completed!”
作者:ZALBB 时间:04-09-28 16:42
我理解的比较简单:归档日志没数据库写日志快。比如:数据库有两组日志,日志1还在归档,
日志2已经被写满了,此时要覆盖日志1,但日志1还没被归档完毕(COPY完毕),结果就出现
此提示。
解决方法:增加日志组,多些缓冲时间,以便归档。
是 lgwr等待将被覆盖的 logfile 对应的 dirty buffer 被写入数据文件,也就是io 繁忙导致 dbwr写太慢
作者:ZALBB 时间:04-09-28 17:52quote: 最初由 biti_rainy 发布
是 lgwr等待将被覆盖的 logfile 对应的 dirty buffer 被写入数据文件,也就是io 繁忙导致 dbwr写太慢
若是这种解释,那就不是增加日志组可解决了。 作者:biti_rainy 时间:04-09-28 18:03
quote: 最初由 ZALBB 发布
若是这种解释,那就不是增加日志组可解决了。
如果大量的IO只是一个段时期的高峰,增加日志组可以延缓这个周期,从而可能会解决这个问题
如果你的系统永远都处于高峰期?那恐怕你需要使用更高速的存储设备和更好的主机
归档没完毕的提示信息是不一样的,当然归档没有完成通常也是IO问题 作者:nattyneat 时间:04-09-29 09:45
如果归档没有完成的话,Alert中提示如下:
Thread 1 cannot allocate new log, sequence 12
All online logs needed archiving
作者:Niy38 时间:04-09-29 14:08
Re: 对“checkpoint not completed!”的理解,欢迎大家讨论
quote: 最初由 nattyneat 发布对“checkpoint not completed!”的理解,欢迎大家讨论
假设数据库存在两个日志组log1和log2,首先,-->log1-->log2-->log1,此时(log2切换到log1)触发checkpoint,该checkpoint will flush dirty block to datafile,从而触发DBWn书写dirty buffer,等到log1覆盖的dirty block全部被写入datafile后才能使用log1(循环使用),如果DBWn写入过慢,LGWR必须等待DBWn完成,则这时会出现“checkpoint not completed!”
My understanding:
log1-> log2, trigger checkpoint 1
after log2 is full,
log2-> log1, trigger checkpoint 2
but if checkpoint 1 is still not finished, then LGWR must wait. This is "logfile switch (checkpoint incompleted)" event. 作者:Niy38 时间:04-09-29 14:11
quote: 最初由 ZALBB 发布我理解的比较简单:归档日志没数据库写日志快。比如:数据库有两组日志,日志1还在归档,
日志2已经被写满了,此时要覆盖日志1,但日志1还没被归档完毕(COPY完毕),结果就出现
此提示。
解决方法:增加日志组,多些缓冲时间,以便归档。
This is event "logfile switch ( archiving needed )", different
from "logfile switch ( checkpoint incomplete)" 作者:remen 时间:04-09-29 15:05
那么如果db是非归档模式,仅仅在高峰时间出现
Thread 1 cannot allocate new log, sequence 286857
Checkpoint not complete
这样的情况的话,应该如何解决呢?
增加日志组??
作者:biti_rainy 时间:04-09-29 15:33quote: 最初由 remen 发布那么如果db是非归档模式,仅仅在高峰时间出现
Thread 1 cannot allocate new log, sequence 286857
Checkpoint not complete
这样的情况的话,应该如何解决呢?
Checkpoint not complete
---------- 很明显,检查点没完成,增加日志组和日志文件大小,当然有限考虑io问题 作者:remen 时间:04-09-29 15:40
谢谢回复!
但是我们的系统平时大概18分钟切换一次日志,唯独在中午运行mrp计划的时候切换比较频繁,同时提示检查点无法完成,所以我觉得日志文件的大小应该差不多了,增加日志组才是首选,请问我的推断正确吗?
难道有什么不正确的吗? 都到这个份上了干吗那么怀疑自己呢
作者:remen 时间:04-09-29 16:16呵呵,谢谢!
作者:remen 时间:04-10-07 09:36另外,如果出现Checkpoint not complete,会造成什么后果呢?
写日志的进程等待归档完成???那么再归档没完成之前的这段时间日志往哪个日志组写呢?
比如现在group 2写满了,要开始写group 1,但是1的归档还没完成,这个时候就出现了Checkpoint not complete,那么这个时候1是不能写的,那日志往哪里写呢?继续重用2??这样的话,2中的数据不就被覆盖了?它可还没有归档呢呀!
另外,上面讨论的都是归档模式下的,但是非归档呢?如果出现Checkpoint not complete意味着什么呢?DBWn速度太慢??
Checkpoint not complete 那数据库就暂时地hang住了呗
非归档,当然是 dbwr 速度太慢(本质上就是io存在问题)
谢谢!
既然这样,那么如果这时候数据库遭到破坏,需要利用归档日志来恢复,仅仅凭借这些日志能够完全恢复吗?
因为既然数据库hang住了,那么这段时间内发生的数据库的改变就没有地方可以写,也就造成了归档日志的不完整,对吗?
ft
数据库hang住了,这段时间数据库能发生改变吗?无法产生任何日志!也就意味着数据库跟死了一样,普通用户都无法登陆!
所有时间均为 . 现在时间是 09:41.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84823/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-84823/
本文讨论了数据库日志组在切换过程中遇到的问题,特别是当检查点未完成时的情况。分析了不同场景下的解决策略,包括增加日志组数量、优化I/O性能等。
2256

被折叠的 条评论
为什么被折叠?



