LGWR的出发条件:
1. 用户提交,commit;
2. 有1/3重做日志缓冲区未被写入磁盘;
3. 有大于1M的重做日志缓冲区未被写入磁盘;
4. 每隔3秒钟;
5. DBWR需要写入的数据的SCN大于LGWR记录的SCN,DBWR出发LGWR写入;
对第5点的解释:
对于一个脏buffer,oracle保证,在脏buffer被DBWR写回block以前,脏buffer对应的重做日志一定是写到磁盘了。如果重做日志没有写回磁盘,oracle会先触发LGWR把重做日志写回磁盘,然后BDWR才把脏buffer写回block。日志总是先于buffer写到磁盘上。这叫做日志写入优先。
对硬盘来讲有一个参数:IOPS(IOper second),每秒IO的次数。
LGWR的特点:
1. 非常频繁,写的次数多,即IOPS大;
2. LGWR一次写的量比较小;
3. LGWR是顺序写;
Log buffer大小设置:
1. 在9i以前,一般是3M;
2. 在10g中oracle会自动调整大小,遵循这样一个原则:‘fixed SGA size’+‘redo buffer ’是granule size的整数倍;
Oracle把SGA和PGA内存分成一个个粒度(granule),粒度大小是ora