问题描述:
近期发现某数据库日志切换频繁,告警检查点未完成( Checkpoint not complete)较为频繁
解决方案:
可考虑新增一组日志组或变更现有日志组大小,本案采用第二种。
切换频率计算:
例如:若一小时切换27次,每个日志文件是50m,那么更高为300M后,切换频率为4.5,计算公式:27*50/300=4.5(次/小时)
具体操作:
– 查询在线重做日志大小
select * from v$log;
– 查询文件位置
select * from v$logfile;
– 新增3组同文件大小的日志组(临时用,若作为永久的,日志文件大小要设定好)
alter database add logfile group 4 '/mnt/eas/oracle/easdata/easdb/redo04.log' size 50m;
alter database add logfile group 5 '/mnt/eas/oracle/easdata/easdb/redo05.log' size 50m;
alter database add logfile group 6 '/mnt/eas/oracle/easdata/easdb/redo06.log' size 50m;
– 切换重做日志,确保在当前日志在 group4、5、6
alter system switch logfile;
– 查看状态若有active 更新检查点
alter system checkpoint;
– 删除原先3组日志(先确定不是当前日志,且已落盘,日志状态为 INACTIVE)
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
– 操作系统层面,删除日志文件,或者后续增加 reuse参数
rm redo01.log redo02.log redo03.log
–PS,若是不在乎group的组数字,后面步骤可以忽略
– 新增3组重做日志
alter database add logfile group 1 ‘/mnt/eas/oracle/easdata/easdb/redo01.log’ size 300m;
alter database add logfile group 2 ‘/mnt/eas/oracle/easdata/easdb/redo02.log’ size 300m;
alter database add logfile group 3 ‘/mnt/eas/oracle/easdata/easdb/redo03.log’ size 300m;
– 切换重做日志,确保在当前日志在 group4、5、6
alter system switch logfile;
– 查看状态若有active, 刷新检查点
alter system checkpoint;
– 删除转换用的日志组
alter database drop logfile group 4;
alter database drop logfile group 5;
alter database drop logfile group 6;
重点说明:1)日志文件的大小,可根据计算公式,或者希望的日志切换频率,进行更改:
计划的日志文件大小 = 现有频率 * 现有日志文件大小 / 切换频率
切换频率 = 现有频率 * 现有日志文件大小 / 计划的日志文件大小
2)删除在线重做日志文件组或者文件,一定要确保,日志组状态处于INACTIVE```language




