DBWn进程负责将脏数据块写入磁盘。它是一个非常重要的进程,随着内存的增加,一个DBWn进程可能不够用了。从oracle8i起,我们可以为系统配置多个DBWn进程。初始化参数db_writer_process决定了启动多少个DBWn进程。每个DBWn进程都会分配一个cache lru chain latch。
DBWn作为一个后台进程,只有在某些条件满足了财会触发。这些条件包括:
1.当进程在LRU链表扫描查找可以覆盖的buffer header时,如果已经扫描的buffer header的数量到达一定的限度时,触发DBWn进程;
2.如果脏数据块的总数超过一定的限度,也将触发DBWn进程;
3.发生检查点(包括增量检查点(incremental checkpoint)和完全检查点(complete checkpoint))时触发DBWn;
4.每隔三秒钟启动一次DBWn;