您现在的位置是:首页 >技术杂谈 >记一次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倍。
参考: