log buffer space一般是由于log buffer较小导致的写log buffer的空间不足产生的等待事件。 而log file sync一般是由于频繁提交导致从log buffer写入到redo log的等待事件。
触发LGWR进程将日志缓冲区中的日志信息写入联机日志文件条件包括以下几种:
1) 前台进程触发,包括两种情况。最显而易见的一种情况就是用户发出commit或rollback语句进行提交时,需要触发LGWR将内存里的日志信息写入联机日志文件,因为提交的数据必须被保护而不被丢失;另外一种情况就是在日志缓冲区中找不到足够的内存来放日志信息时,也会触发LGWR进程将一些日志信息写入联机日志文件以后,从而释放一些空间出来。
2) 每隔三秒钟,LGWR启动一次。
3) 在DBWR启动时,如果发现脏数据块所对应的重做条目还没有写入联机日志文件,则DBWR触发LGWR进程并等待LRWR写完以后才会继续。
4) 日志信息的数量达到整个日志缓冲区的1/3时,触发LGWR。
5) 日志信息的数量达到1MB时,触发LGWR。
6) 发生日志切换时触发LGWR
如果当前联机日志文件写完时,这时就需要转换到另外一个可写的联机日志文件上去,这个过程叫做日志切换。日志切换的大致过程包括:
1) 从控制文件中得到下一个可用的联机日志文件。
2) 记录写入当前联机日志文件的最后一个日志块的SCN(叫做high SCN)。关闭当前联机日志文件。
3) 增加SCN,再次操作控制文件,将下一个联机日志文件标志为CURRENT,判断前一个联机日志文件里包含的重做记录所对应的脏数据块是否都已经写入数据文件,如果没有则标记为ACTIVE;如果是则标记为INACTIVE。如果数据库是归档模式,那么LGWR将前一个联机日志文件加入归档列表中,等待归档。
4) 打开新的联机日志文件组中的所有成员,记录当前日志序列号(log sequence)和第一个日志块的SCN(叫做low SCN),新一轮的重做记录开始。
转自
阅读(1013) | 评论(0) | 转发(0) |