昨天有人问为什么只有一个LGWR进程呢?
在单实例中,确实只有一个LGWR进程,在RAC中,每个实例都有一个LGWR进程。
LGWR负责将redo log buffer中的数据写入redo log file.即使你给日志group 分配了多个member,也只有一个LGWR去写入。
注意,多个日志成员他们的同时写入的,并且由一个LGWR同时写入。LGWR写的四个条件就不说了。
为什么一个实例只有一个LGWR呢? 为什么Oracle不允许我们像DBWn, ARChn一样可以设置多个LGWR呢?
首先你要搞清楚日志文件是连续的,顺序的,正是由于redo log file是有序的,所以不可能引入并行写入的特征。
假如你有多个LGWR,由于redo log file 是有序的 ,那么必然引入排队机制,引入了排队机制 就不是并行了。
所以一个实例只能有一个LGWR, 这是由log file 是 有序的 这个特征决定的。