后台进程
当Oracle实例启动时,多个后台进程就会启动。后台进程是设计用于执行特定任务的可执行代码块。
SGA和后台进程结合起来组成了Oracle实例。
1、SMON 系统监控器
(1)在系统崩溃或实例故障的情况下,通过将联机重做日志文件中的条目应用于数据文件,SMON进程可执行崩溃恢复
(2)在系统重新启动期间清除所有表空间中的临时段
(3)常规任务是定期合并字典管理的表空间中的空闲空间
系统全局区域的进程
2、PMON 进程监控器
(1)回滚电源断开时正在处理的事务
(2)在缓冲区缓存中标记可用的事务块
(3)删除表中受影响行上的锁
(4)从活动进程列表中删除未连接进程的进程ID
系统全局区域的进程
3、DBWn 数据库写入程序(database writer),在旧版本中也称为DBWR
(1)将缓冲区缓冲中新增的或改动的数据块(脏块)写入数据文件,使用LRU算法,DBWn首先写入最早的、最小的活动块。
(2)最多可启动20个DBWn ,从DBW0至DBW9,及DBWa至DBWj
(3)DB_WRITER_PROCESS参数可以控制DBWn的数量
SGA中的数据库缓冲区缓存 > DBW0 > 数据文件
4、LGWR 日志写入程序
(1)负责重做日志缓冲区的管理,在具有大量DML活动的实例中,LGWR是最为活跃的进程之一。
直到LGWR成功地将重做信息(包括提交记录)写入重做日志文件,才能认为事务已经完成。
直到LGWR已经写入重做信息,才可以通过DBWn将缓冲区缓存中的脏缓冲区写入数据文件。
(2)如果分组重做日志文件,并且组中一个多元复用的重做日志文件已经损坏,则LGWR将写入其它组成员,交在警告日志文件中记录错误
SGA中的重做日志缓冲区 > LGWR
5、ARCn 归档程序
如果数据库处于ARCHIVELOG模式,则在重做日志填满并且重做信息开始按顺序填充下一个重做日志时,归档进程将重做日志复制至一个或多个目的地。
理想情况:归档进程应在下一次使用填满的重做日志之前完成以上操作,否则会有性能问题。
解决:(1)使重做日志文件更大一些 (2)增加重做日志组的数量 (3)增加ARCn进程的数量
每个实例最多可启动10个ARCn进程,LOG_ARCHIVE_MAX_PROCESSES参数:控制归档进程的数量
重做日志 > ARCn 归档程序
ARCn 归档程序 > 控制文件
ARCn 归档程序 > 脱机存储设备
6、CKPT 检查点
(1)可帮助减少实例恢复所需的时间量。在检查点期间,CKPT更新控制文件和数据文件的标题,从而反映最近成功的系统改变号(System Change Number, SCN)。
(2)每次进行重做日志文件切换时,都自动产生一个检查点
(2)DBWn进程按照常规写入脏缓冲区,将检查点从实例恢复可以开始的位置提前,从而减少平均恢复时间(Mean Time to Recovery, MTTR)。
CKPT > 数据文件
CKPT > 控制文件
7、RECO 恢复器进程
用于处理分布式事务(包括对多个数据库中的表进行改动的事务)的故障。
如果同时改动两个数据库的表,在更新一个数据库中的表之前,两个数据库之间的网络连接失败了,则RECO将回滚失败的事务。
系统全局区域的进程
8、D000调度程序进程
用户进程 < > D000
共享服务器进程 < > D000
SMON 系统监控器 PMON 进程监控器 RECO恢复器进程
D000调度程序进程
ARCn 归档程序 CKPT 检查点 LGWR 日志写入程序 DBWn 数据库写入程序