oracle数据库日志中报错:checkpoint not completed 导致高发时段数据库宕机解决方式

近期在自己搭设的环境中测试了一下,发现每一周都会有数据库宕机的情况出现,查看日志频繁出现:checkpoint not completed 提示。
度了一下网上的分享,发现是数据库出现脏数据块写入落库时,日志分组无法做及时切换导致的。
可以分别通过以下语句做查看:
①查看制定日期后每一天的日志分组切换次数,查看高峰时段的切换次数,根据切换次数对日志分组做调整。

SELECT TO_CHAR(first_time,'yyyy-mm-dd') day1,
  COUNT(*)
FROM v$log_history
WHERE first_time>=to_date('2021-01-07','yyyy-mm-dd')
GROUP BY TO_CHAR(first_time,'yyyy-mm-dd');

oracle数据库日志中报错:checkpoint not completed 导致高发时段数据库宕机解决方式_第1张图片
②查看当前的日志分组信息(分组,位置,大小M,状态),此处已经是我调整后的了
补充:
状态分为四个:unused,current,active,inactive
》unused通常指从未被使用的日志组,即新添加的日志组。
》current状态为LGWR进程正把redo log buffer的日志写进日志组中。
》active为刚刚完成日志切换后的状态,此时该日志组中提交的事务引起的数据改变还没有完全从DB buffer cache写入到数据文件中,因此该日志组还不能被覆盖,并且待完全写入后变为inactive状态。如果数据库为归档模式,那么是在该状态下完成归档的。
》inactive状态的日志可以被覆盖,可以允许写入日志。如果是在归档模式下,那么此阶段证明归档已经完成。

select l.group#,member,bytes/1024/1024,l.status from v$log l,v$logfile f where l.group#=f.group# order by 1;

oracle数据库日志中报错:checkpoint not completed 导致高发时段数据库宕机解决方式_第2张图片
③根据需要新增或者配置日志分组
这里我原来是三个200m,根据常见调整现在我新增了3个
(如果是linux下,需要登录sqlplus,具体登录方式不做介绍,可自行百度)

alter database add logfile group 4 ('实例地址/redo04.log') size 200m;
alter database add logfile group 5 ('实例地址/redo05.log') size 200m;
alter database add logfile group 6 ('实例地址/redo06.log') size 200m;

④完成。

你可能感兴趣的:(oracle)