oracle cannot allocate new log及Checkpoint not complete故障处理
一 问题描述有同事反馈,oracle数据库登录很慢,业务也受影响,页面打不开或者很缓慢。告警日志有如下报错:Thread 1 cannot allocate new log, sequence 24954Checkpoint not completeawr报告里也看到有该等待事件:二 问题排查2.1 查看redo log的大小及状态select * from v$log;如果status都是ACT
一 问题描述
有同事反馈,oracle数据库登录很慢,业务也受影响,页面打不开或者很缓慢。
告警日志有如下报错:
Thread 1 cannot allocate new log, sequence 24954
Checkpoint not complete
awr报告里也看到有该等待事件:

二 问题排查
2.1 查看redo log的大小及状态
select * from v$log;

如果status都是ACTIVE或者CURRENT,没有INACTIVE或者unused,说明日志很紧张,不够用。
redo logfile的status为active,代表checkpoint还未完成,如果日志文件循环使用再次到达该文件,数据库将处于等待的停顿状态。
日志文件必须等待DBWR完成检查点触发的写操作之后才能被覆盖。
三 解决办法
3.1 新建日志组
#新建日志组
alter database add logfile group 10 '+DATA/yjt/onlinelog/group_10_1.log' size 5g;
alter database add logfile group 11 '+DATA/yjt/onlinelog/group_11_1.log' size 5g;
……
# 删除较小的日志组
当该日志组为INACTIVE状态时,将其删除:
alter database drop logfile group 2;

#检查确认
#查看redo log状态
select * from v$log;
确保状态不再都是ACTIVE或者CURRENT。
#切换日志
alter system switch logfile;
验证该sql是否能很快执行完成。
#检查告警日志是否还有该报错
略
3.2 查看AWR报告里的Segments by DB Blocks Changes
/*
如果新建完日志组后,还是不行,则检查下Segments by DB Blocks Changes。示例:

看下是哪个对象的DB Block Changes比较多,则具体对其进行分析优化或者将该业务迁移隔离,避免影响整体业务。
*/
3.3 增加dbwr进程
调大db_writer_processes参数值
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)