大家都知道oracle事务的完成与否依赖于redo log的落地,当数据库在业务高峰时将产生大量的redo,这个时候数据库的瓶颈往往是LGWR进程将redo buffer写到redolog的开销时间,在11g以及之前的版本中oracle采用的是LGWR单进程串行工作,oracle为了解决LGWR单进程的瓶颈问题,在12c的版本中引入了SCALABLE LGWR功能,简单理解就是由单进程串行写入改造成多进程并行写入,类似于oracle的并行功能,这样将大大的提高redo buffer的落地性能从而提供数据库的tps.那理想总是美好的,而现实总是残酷的.由于SCALABLE LGWR是新开发的功能,通常新功能都伴随着新bug…
这是之前现场某套数据库异常宕机后启动的报错,简单用关键字在mos中搜索后可以发现存在大量的bug
Recovery Session Failed with:
ORA-00283: recovery session canceled due to errors
ORA-00600: internal error code, arguments: [krr_process_read_error_2],
Alter database open fails with:
ORA-00600: internal error code, arguments: [kcrfrgv_nextlwn_scn] …
ORA-600 signalled during: ALTER DATABASE OPEN…
简单查阅了几篇文档,该问题便是12c新引入的SCALABLE LGWR功能触发,那解决方案也很简单那就是关闭SCALABLE LGWR功能,继续使用传统LGWR工作模式.