1.重做日志写进程(LGWR)
LGWR负责将redo log buffer 的记录顺序的写到redo log files中,减少I/O量。
以下情况需要将redo log buffers(内存)的记录顺序的写入到redo log(外存)中
- 某个事物被提交时;
- 当redo log buffers中变化的记录超过1MB时;
- 当redo log buffers中所存的记录超过缓冲区容量的1/3;
- 在DBWR将数据库高速缓冲区中修改过的数据块写到数据文件之前;
- 每3秒钟;
2.数据库写进程(DBWR/DBWn)
负责将DB buffers cache上的脏缓冲区的数据写到数据文件上。并不是已出现脏缓冲区DBWR就写入数据,而是积累了足够多的数据一次性写一大批内存数据到数据文件上。
Oracle允许在一个实例上最多启动10个数据库写进程。DBW0-DBW9
以下情况需要将DB buffers cache(内存)的数据写到数据文件(外存)中:
- 当脏缓冲区的数量超过了设定限额;
- 所设定是时间间隔已到;
- 当有进程需要DB buffers cache却找不到空闲的缓冲区时;
- 当校验点发生时;
- 当某个表被删除(drop)或被截断(truncate)时;
- 当某个表空间被设置为只读(read only)状态时;
- 当使用类似于ALTER TABLESPACE users BEGIN BACKUP的命令对某个表空间进行联机备份时;
- 当某个临时表空间被设置为只脱机状态(offline)或正常状态(normal)时;