2022-05-17

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后台进程恢复服务后,数据库/实例方可提供正常服务。

  • 主要功能

    • 释放用户进程所持有的资源
    • 清理内存中不被使用的缓存信息
    • 将数据库服务注册到监听(TNS)中
    • 监控后台核心进程(恢复异常的核心进程)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容