【基础】后台进程

checkpoint: 当检查点事件发生时,所对应的scn,用于作为redo log recover 的起点和保证数据库一致性。
scn: system change number :记录事务发生的先后顺序(Oracle的内部时钟,通过一个数字表示)

dbwr:1、从数据文件读数据块到data buffer、写脏块  2、释放data buffer空间  3、写入datafile 时是无序的,写入速度较慢

------通过 db_write_processes 决定dbw的进程数,最多可以有20个进程。

触发条件:
1、生成检查点时,dbwr写脏块,并释放db cache 空间(如正常关库,手工生成检查点、日志切换等)
2、当db cache 没有空间的时候
3、表空间脱机、设置只读模式、热备份
4、删除或truncate table

lgwr:写日志条目到redo logfile (必须在dbwr写脏块之前写入日志),按顺序写日志条目到redo logfile。
触发条件:
1、commit transaction
2、buffer 空间1/3 满
3、日志条目达到1M的时候
4、每过3s 写一次
5、在dbwr 写脏块之前会写日志
--------建议: 日志文件和数据库文件分开存放在不同磁盘上,日志文件存放到磁盘I/O 最快的磁盘上(比如用raid 1+0)

smon :监控instance的启动,当instance 非正常关闭时,再次启动时做instance recover(实例的恢复);如果正常关闭,启动instance,不需做任何操作。
正常关闭实例:触发检查点事件:
instance recovery
1)写脏块 2)写redo log 3)未提交事务回滚 4)在控制文件、数据文件头部、redo log 记录检查点
未正常关闭实例:不生成检查点
打开实例时:
smon:

1) roll forward :利用redo 把日志已经写入redo file ,而未写入datafile的丢失的脏块进行重做(redo)
2) open
3) roll back :通过undo segment 将未提交的事务进行回滚
pmon :process monitor(监控session)
1、如果session 非正常结束,pmon 会清理session所占用的pga、在table 上的lock ,回滚未完成的事务等
2、oracle 里面的‘清洁工’

ckpt:生成检查点
1、当检查点时间发生时,通知dbwr 写脏块
2、并且在数据文件头部和 控制文件中 记下一个统一的检查点,保持数据库的一致性

arcn :归档模式下,日志切换时,备份历史日志。

原文地址:https://www.cnblogs.com/tomatoes-/p/6599632.html