Oracle数据库检查点未完成原因详解-阿里云开发者社区

开发者社区> 技术小胖子> 正文

Oracle数据库检查点未完成原因详解

简介:
+关注继续查看

最近在alter日志中发现 Checkpoint not complete 信息
产生此问题的原因具体分析:
首先说一下checkpoint 是什么?
chkpoint是一个数据库的内部机制,它存在有两个目的:

1. 保证数据的一致性
    系统发生检查点将出发DBWR进程将缓冲区中的脏数据块写入到数据文件,同时更新数据文件中的SCN号,记录联机重做日志文件中LRBA(low redo block address)的位置到控制文件中,当在写入过程中,突然实例崩溃,脏数据块没有完全写入到数据文件中。当实例启动的时候,会检查控制文件中的 终止SCN号,(四种SCN)这时候发现是空的(数据库正常运行的时候是无穷大或者保持为空),就认为数据库没有正常关闭,需要实例恢复,于是SMON进程根据控制文件中的SCN号,到重做日志文件中取出重做条目重现实例崩溃的那个状态。

2. 数据库实例崩溃后的实例恢复
    当实例恢复的时候,到底从重做日志文件的什么位置开始恢复呢?检查点checkpoint就是记录了一个SCN号,当实例回复的时候从最近的这个检查点做恢复,不必全部恢复重做日志的内容,减少了恢复时间。

   日志切换会触发检查点,当检查点触发后会引起DBWR进程将脏数据块写入数据文件,这个时候写入数据文件的脏数据块已经都写入了联机重做日志中,是安全的,当日志缓冲区的日志写满需要切换日志文件的时候,由于下一个日志文件对应的脏数据块没有完全写入到数据文件中,所以不能被覆盖,于是就发生了Checkpoint not complete。

   这时候可能是磁盘的原因导致DBWR写磁盘很慢,或者DBWR进程效率不高,以至于在发生日志切换的时候没有课覆盖的日志文件。这时候可以添加DBWR进程的数,或者添加日志文件组,来解决这个问题。


遂添加一个日志组:
用sysdba登录 
alter database add logfile gropu 4 ‘$ORACLE_HOME/oradata/SID/redo04.log’ size 100M;
切换日志文件
alter system switch logfile;
查看当前的日志文件是否在使用
select * from v$log
 



     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/461220,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(1)
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(1)
27 0
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(3)
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(3)
24 0
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(2)
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(2)
25 0
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(9)
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(9)
31 0
Java 中 List 分片的 5 种方法!(1)
Java 中 List 分片的 5 种方法!(1)
11 0
查询MySQL字段注释的 5 种方法!(2)
查询MySQL字段注释的 5 种方法!(2)
23 0
MyBatis原生批量插入的坑与解决方案!(1)
MyBatis原生批量插入的坑与解决方案!(1)
12 0
查询MySQL字段注释的 5 种方法!(5)
查询MySQL字段注释的 5 种方法!(5)
25 0
查询MySQL字段注释的 5 种方法!(3)
查询MySQL字段注释的 5 种方法!(3)
24 0
21119
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载