> 文章列表 > 记一次oracle入库慢,log file switch (checkpoint incomplete)

记一次oracle入库慢,log file switch (checkpoint incomplete)

记一次oracle入库慢,log file switch (checkpoint incomplete)

AWR报告生成:Oracle AWR报告生成步骤_小百菜的博客-CSDN博客

发现log file switch (checkpoint incomplete)

这里出现了大量的log file switch(checkpoint incomplete)等待事件。

查看redo每个组的大小、状态 

select group#,thread#,archived,status, bytes/1024/1024 "大小(M)" from v$log order by status;

发现单个日志大小为1G,一共6组,但除了当前日志组状态为current,其他日志组都为active,经过分析有以下原因:1、日志组不足;2、DBWN写脏数据过慢
手动添加了4个日志组,每组大小为1G
alter database add logfile group 7 (‘redo7a.log’,‘redo7b.log’) size 1g;
alter database add logfile group 8 (‘redo8a.log’,‘redo8b.log’) size 1g;
alter database add logfile group 9 (‘redo9a.log’,‘redo9b.log’) size 1g;
alter database add logfile group 10 (‘redo10a.log’,‘redo10b.log’) size 1g;
观察了几分钟发现同步速度依然没有明显提升,那就是DBWN进程写入脏数据过慢,接着查看AWR报告。

system i/o事件产生的等待时间最长

 这是可以看到后台进程db file async i/0 submit排在第一位

到这里基本能确认是I/O提交问题,导致数据同步延迟的。

filesystemio_options为NONE的情况下 出现db file async I/O submit等待,可以设置filesystemio_options参数为ASYNCH或者SETALL,使得db file parallel write等待代替db file async I/O submit等待。

FileSystemIO_Options参数有三个可选的值:setall,directio,和asynch。当FileSystemIO_Options值设置为setall时,Oracle将使用最佳的I/O选项来访问所有类型的数据文件,包括数据文件、控制文件和日志文件。

当FileSystemIO_Options值设置为setall时,Oracle会自动检测系统和存储设备的I/O特性,并选择最佳的I/O选项来访问数据文件。这通常包括使用操作系统缓存、文件系统缓存、直接I/O和异步I/O等技术,以提高性能和可靠性。

设置FileSystemIO_Options为setall可以使Oracle自动选择最佳的I/O选项,从而提高系统的性能和可靠性。

alter system set filesystemio_options=setall scope=spfile;

这个参数需要重启后生效

重启数据库
sqlplus / as sysdba
SQL> shutdown immediate;
SQL> startup;

修改后

 

使用数据库并行写入后,写入速度提高了 4.26倍。

 

 

 

参考:

log file switch(checkpoint incomplete)导致OGG同步延迟38个小时_log file switch checkpoint_hello_alldatabase的博客-CSDN博客