oracle cannot allocate new log及Checkpoint not complete故障处理

一 问题描述

有同事反馈,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 logfilestatusactive,代表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参数值

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值