PMON:其含义是Processes Monitor,是进程监视器。如果你在执行某些更新语句,未提交时进程崩溃了,这时候PMON会自动回滚该操作,无需你人工执行ROLLBACK命令。除此之外还可以干预后台进程,比如RECO异常失败了,此时PMON会重启RECO进程,如果遇到LGWR进程失败这样的严重问题,PMON会做出中止实例这个激烈的动作,用于防止数据错乱。
SMON:其含义为System Monitor,理解为系统监视器,与PMON不同的是SMON关注的是系统级的操作而非单个进程,重点工作在于intance recovery,除此之外还有清理临时表空间、清理回滚表空间、合并空闲空间,等等。
LCKn:仅使用于RAC数据库,最多可有10个进程(LCK0,LCK1,…,LCK9),用于实例间的封锁。
RECO:用于分布式数据库的恢复,全称是Distributed Database Recovery,适用于两阶段提交的应用场景,比如我们面临多个数据库A, B, C,某个应用跨越三个数据库,在发起的过程中需要A, B, C库都提交成功,事务才会成功,只要有一个失败,就必须全部回滚,这额LCKn一样,适用的场景比较特殊。
CKPT:由Oracle的FAST_START_MTTR_TRAGET参数控制,用于触发DBWR从数据缓冲区中写出数据到磁盘。CKPT执行的越频繁,DBWR写出越频繁,DBWR写出越频繁越不能显示批量特性,性能就越低,但是数据库异常恢复的时候就会越迅速。
DBWR:Oracle最核心的进程之一,负责把数据从数据缓冲区写到磁盘里,该进程和CKPT相辅相成,因为是CKPT促成DBWR去写的,不过DBWR也和LGWR紧密相关,因为DBWR向将数据缓冲区数据写到磁盘的时候,必须通知LGWR先完成日志缓冲区写到磁盘的动作后,方可开工。
LGWR:把日志缓存区的数据从内存写到磁盘的REDO文件中,完成数据库对象创建、更新数据等操作过程的记录。这个REDO的记录非同小可,可以用来做数据库的异常恢复,只要保护好了这些REDO文件和后续对应的归档文件,从理论上说,即使数据文件被删除光了,还是可以让数据库根据这些日志记录,把所有在数据库中曾经发生的事情全部重做一遍,从而保证了数据库的安全。
LGWR必须记录下所有从数据缓存区写进数据文件的动作,工作任务相当繁重,由于要顺序记录情况下保留的日志才有意义,多进程难以保证顺序,因此LGWR只能采用单进程,为了解决这个问题,LGWR给自己施压,制定了5条严格的制度来要求自己,以此来适应工作高强度的日志记录工作。
1、每隔三秒钟,LGWR运行一次。
2、任何COMMIT触发LGWR运行一次。
3、DBWR要把数据从数据缓存写到磁盘,触发LGWR一次。
4、日至缓冲区满三分之一或者记录慢1MB,触发LGWR一次。
5、联机日志文件切换也将触发LGWR一次。
ARCH:他的作用是在LGWR写日志的到需要覆盖重写的时候,触发ARCH进程去转移日志文件,复制除去形成归档文件,以免日志丢失。
Oracle体系结构中最核心的八个进程
版权声明:本文为qq_37823979原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。