2022-05-17

2022-05-16  本文已影响0人  归源

Oracle中的后台进程

为了使多数用户获得最佳的性能体验,Oracle系统中融合了一些后台进程(background processes)。常见的后台进程包含 DBWnLGWRCKPTSMONPMONRECOARCnQUNn 及其他一些后台进程。

Oracle数据库由数据库实例两部分组成,一个实例总是拥有多个后台进程,且后台进程总是伴随实例的启动而启动。通过 V$BGPROCESS 视图可以查看实例的所有后台进程的相关信息。

图为多进程体系架构下的Oracle实例的后台进程

oracle-background.gif

SMON监控进程

SMON(System Monitor Process, 系统监控进程) 主要负责实例启动(Instance Startup)阶段的实例恢复(Instance Recovery)。同时,还负责清理内存中不再使用的临时区段(temporary segments),并合并由字典管理的表空间中的连续的空闲数据块。

在实例运行过程中,因为文件读取(file-read)或数据文件离线(offline)所产生数据库的异常,这将导致在实例进行恢复时所有呗中断的事务都会被忽略掉。而这些被忽略的异常将会通过SMON进程启动时在表空间中或文件重新在线后进行恢复。

SMON 是一个周期性执行的进程,在实例运行过程中,SMON 后台进程会被定期唤醒,并且其他进程需要时也可以调用SMON进程。

在一些实时应用集群(例如,Oracle RAC)中,一个实例的SMON可以为故障的CPU或实例进行故障恢复。

PMON监控进程

PMON(Process Monitor Process, 进程监控进程) 负责清理内存中存储区域(数据库高速缓冲区,Database Buffer Cache)中的缓存并释放用户进程正在使用的资源。并且在用户进程异常退出后进行恢复操作。

与SMON相同,PMON同样是一个周期性的后台监控进程。PMON后台进程会定期检查实例中的调度进程和用户进程是否正常,当监控进程检查到非正常退出的进程后,PMON进程会尝试重启该进程,但是被Oracle标记/终止的进程则PMON不会尝试去启动这些进程。

PMON进程会被周期性的唤醒,并且当其他进程需要时可以调用/唤醒PMON后台进程。

当PMON进程异常退出时,数据库/实例也会发生崩溃并退出,直到PMON后台进程恢复服务后,数据库/实例方可提供正常服务。

上一篇 下一篇

猜你喜欢

热点阅读