oracle:标准配备的后台进程 天高地厚

DBWn(Database Writer):主要的工作是将数据库高速缓冲区中被改过的数据写回到数据文件(Data File)中。Oracle数据库为了执行效率,并不会直接存取硬盘,而会先到SGA中的数据库高速缓冲区中寻找,如果没有找到,才会去存取硬盘。而DBWn的工作就是负责保持Oracle内存和硬盘上的数据的一致性,它负责不定时地将内存中的脏缓冲区(Dirty Buffer)写到数据库里。一个Oracle实例最多可以有10个DBWn(DBW0~DBW9)。DBWn将Buffer取出并写到硬盘有两个主要的机制:先期写入协议(Write-ahead Protocol)机制与LRU(Least Recently Used)机制。

LGWR(Log Writer):主要的工作是将重做日志缓冲区中的记录写到重做日志文件(Redo Log File)里。Log Writer进程将来自SGA的重做日志缓冲区中的Redo Entry写到硬盘上。当事务(Transaction)被提交(Commit)时,LGWR会遵循先期写入协议,负责将重做日志缓冲区存储的数据更改记录写入联机重做日志文件内。

SMON(System Monitor):SMON执行两个主要的功能,第一个是实例恢复,在数据库不正常中断后再度打开时,SMON会自动执行实例恢复,也就是会将联机重做日志中的数据写回到数据文件中。第二个是收集空间,除了执行实例恢复之外,SMON还有一个例行性的工作,就是将表空间内相邻的空间进行合并,但表空间必须是数据字典管理模式。

提示

Oracle数据库的恢复可分为两大类,实例恢复与介质恢复,实例恢复由SMON自动执行,当实例恢复无法成功地完成恢复作业时,就必须进行介质恢复,而介质恢复就是代表有人介入的手动恢复。

PMON(Process Monitor):PMON会监视数据库的用户进程。若用户的进程非正常中断,PMON会负责清理任何遗留下来的资源(例如,内存),并释放失效进程所保留的锁,然后从进程列表中删除已终止的进程。也就是说,当今天有一笔事务的前端程序突然脱机,这笔事务并不会结束,因为没有人下达提交指令;Oracle Server是根据服务器进程做动作的,而服务器进程是根据用户进程做动作的,如果用户进程中断了,那么服务器进程并不会知道而会一直停留等待,这时,PMON就负责检查有没有服务器进程所对应的用户进程停止了,如果有的话,就恢复那一笔事务。

CKPT(Checkpoint):主要负责更新数据库的最新状态,动作的对象是数据文件和控制文件(Control File),实际上,它的动作很简单,只要求将数据库高速缓冲区中的东西写回到数据文件中,而真正做动作的是DBWn,当完成之后,CKPT就会在控制文件中做记录。每当经过一段固定的时间,DBWR就会把已修改过的数据库高速缓冲区中的脏缓冲区写回到数据库,这个时间点叫做检查点(Checkpoint),CKPT的功能就是告知DBWR进行这个动作;当检查点完成后,CKPT会更新控制文件和数据文件的文件头。这样在需要实例恢复时,就不需要检查点之前的数据,从而可以缩短启动时间。

提示

可能有人会问,DBWR不是有LRU机制吗?为何还要设置检查点呢?因为LRU是将最不常使用的数据写到硬盘中,而把较常使用的数据保存在数据库高速缓冲区中以减少I/O,但这会有一个盲点,就是在脱机时,这些数据只能从重做日志缓冲区中找回来,无形中会造成维护上的问题。所以CKPT的功能就是告知DBWR进行检查点的设置,但当DBWR要写回到数据文件时,会先去确认如果DBWR发现某些重做记录尚未写入联机重做日志文件(Online Redo Log File),就通知LGWR前来处理,之后DBWR才会真正去处理,这样,就可以确保数据被妥善存储。

可选后台进程(Optional Background Processes):当需要打开特殊功能时才会启动的进程,也就是说,当这些可选的后台进程突然中断时,数据库并不会因此而崩溃。这些可选后台进程的后台进程包含ARCn等。

原文地址:https://www.cnblogs.com/net2012/p/2872839.html