log_file_sync 等待突然增加

rfu*_*sca 6 performance oracle oracle-11g-r2

我使用的是带有 2 节点 RAC 系统的 Oracle 11gR2。它与 EMC Clariion 共享光纤存储。

上周五事情变得很糟糕......快。多年来正常运行的所有突然过程变得非常非常缓慢。我注意到 log_file_sync 等待突然增加,并且 LGWR 进程被列为多个进程的阻止程序。我们所知道的那个星期五没有任何变化。此外,它似乎只是在一个节点上。

Statspack 报告确认 log_file_sync 等待时间从大约 1 毫秒变为 47 毫秒!另外 statspack 显示了这一点 - 这意味着其中一些正在等待很多:

                           Total ----------------- % of Waits ------------------
Event                      Waits  <1ms  <2ms  <4ms  <8ms <16ms <32ms  <=1s   >1s
-------------------------- ----- ----- ----- ----- ----- ----- ----- ----- -----
log file sync               100K    .0    .3   1.7   9.0  25.4  31.0  32.4    .1
Run Code Online (Sandbox Code Playgroud)

而在此之前:

                           Total ----------------- % of Waits ------------------
Event                      Waits  <1ms  <2ms  <4ms  <8ms <16ms <32ms  <=1s   >1s
-------------------------- ----- ----- ----- ----- ----- ----- ----- ----- -----
log file sync              1589K  72.3  20.4   5.4   1.2    .6    .1    .0
Run Code Online (Sandbox Code Playgroud)

什么会导致这种情况?我应该检查什么?

Dav*_*dge 2

当进行提交并且重做缓冲区需要刷新到磁盘时,就会发生日志文件同步。会议必须等待这种情况发生。

日志文件同步数量的增加通常意味着您的一位开发人员已经对提交感到高兴,并且提交得太频繁 - 例如,每一行。

这里,您可能有一个执行大约 150 万条 DML 语句的进程,并且在每条语句之后都会发出一次提交,因此请留意某个加载几百万行数据的进程。