1.LGWR
LGWR日志写入进程负责将重做日志缓冲区的日志条目写入磁盘上的练级日志文件。
当运行DML或DDL语句时,服务器进程首先要将事物的变化记载到重做日志缓冲区,然后才会写入到数据告诉缓冲区。
并且redo log buffer的内容将会被写入到联机重做日志文件,以避免系统以外带来的损失。
redo log buffer是一个循环结构,LGWR将重做日志缓冲区的重做记录写入redol log file后,相应的缓冲区内容会被清空。
一下情况 LGWR会开始工作
a.DBWR进程将脏缓冲区写入数据文件之前
b.重做记录达到缓冲区的三分之一
c.日志缓冲区记录的日志多余1m
d.每隔三秒钟
e.提交事务(commit)
oracle总是先记载数据变化到重做日志缓冲区,然后才修改数据告诉缓冲,于此类似
在DBWN将脏缓冲区写入到数据文件之前,首先要有LGWR将重做日志缓冲区写入到重做日志中。
与data buffer cache相比,redol og buffder要小得多,所以为了保持redo log buffer的效率,要每隔三秒就
LGWR就会自动工作
另外关于快速提交机制,当执行commit操作时,并不是将脏缓冲区数据写入到数据文件中,而是将
重做日志缓冲区的内容写入到redol log file中
2.DBWN数据库写入进程 database writer
负责将脏缓冲区的内容写入到数据文件。
可以有dbw0-dbw9最多10个写进程,由初始化参数DB_WRITER_PROCESS来完成
当database cache的块被修改,他被标记为脏缓冲区并添加到以scn为顺序的LRUW(LRU writer)列表,
这个顺序与redo log buffer的顺序一致。
一下情况DBWN工作
a.系统发出ckpt指令
b.脏缓冲区个数达到阈值
c.服务器进程搜索一定数目的数据块后,不能找到自由缓冲区
d.数据写入时间到
e.表空间脱机或进入只读状态
f.执行删除或截断表操作
g.执行alter tablespace ..begin backup(需要同步数据)