一次大量log file switch的问题分析

WHODSREP数据库早上出现性能缓慢的问题,登陆到主机上查看,数据库中有大量的log file switch等待。

查看日志组发现当前日志组只有4组,而且是非归档模式。考虑增加日志组先缓解log file switch等待。

在尝试建了2-3组之后,发现log file switch已经缓解,而后系统出现很多latch:row cache objects等待。是由并行进程执行的。

查看并行的进程,都是2458导致的。

进一步查看2458,发现是SMON进程,此时正在做大批量的并行回滚的操作。产生了大量的latch等待。

正在执行的并行回滚无法修改参数fast_start_parallel_rollback为false,改成串行。需要设置10513事件终止,然后在修改参数,在关闭10513事件。通过下列步骤将并行回滚改成串行回滚

SQL> select pid,program from v$process where program like '%SMON%';
 
       PID PROGRAM
---------- ------------------------------------------------
        13 oracle@db01 (SMON)
 
SQL> oradebug setorapid 13;
Oracle pid: 13, Unix process pid: 3099, image: oracle@db01 (SMON)
SQL> oradebug event 10513 trace name context forever ,level 2;
SQL> alter system set fast_start_parallel_rollback=false;
SQL> oradebug event 10513 trace name context off;

再次观察,并行进程已经没有了,SMON采用串行回滚的方式进行回滚,缓解了数据库的压力。

至此,故障算是基本上恢复了。

分享到: 更多

Post a Comment

Your email is never published nor shared. Required fields are marked *