
PMON 是一个持续运行的后台进程。它主要采用被动触发 + 主动轮询相结合的工作机制:
kill -9)时,操作系统内核会向 PMON 进程发送一个信号(通常是 SIGPIPE 或连接断开的信号),通知它有进程死亡。V$SESSION, V$PROCESS)中移除。enqueue 资源),构建一个等待图 (Wait-for Graph)。在这个图中,节点代表会话,边代表会话 A 等待会话 B 持有的资源。ORA-00060: deadlock detected while waiting for resource 错误。应用程序需要处理此错误(通常重试事务)。SERVICE_UPDATE 消息,告知实例信息。虽然 PMON 本身很少成为性能瓶颈,但监控其活动有助于了解系统健康状况和失败频率:
ADR (Automatic Diagnostic Repository) 目录(通常是 $ORACLE_BASE/diag/rdbms/<dbname>/<instname>/trace)写入跟踪文件 (<instname>_pmon_<pid>.trc)。这些文件包含详细的错误信息和清理动作记录。是诊断 PMON 相关问题的首要位置。alert_<instname>.log) 中,例如:PMON started with pid=<pid>ORA-00060: Deadlock detected. More info in file... (指向具体的跟踪文件)V$SESSION / V$PROCESS******:** 查看 PMON 进程本身的状态 (PROGRAM = 'PMON', BACKGROUND = 'PMON')。观察其 STATUS, LAST_CALL_ET (空闲时间) 等。V$LOCK / V$ENQUEUE_STAT / V$SESSION_WAIT******:** 监控锁争用和死锁相关的等待事件 (enq: TX - row lock contention, enq: TM - contention, library cache lock/pin, cursor: pin S wait on X 等可能与死锁或阻塞相关)。死锁发生时,相关会话的等待事件会体现出来。V$TRANSACTION******:** 查看当前活动事务。PMON 清理失败事务后,相应的事务记录会消失。V$SYSSTAT******:** 查看系统统计信息:user commits / user rollbacks: 正常提交和回滚。transaction rollbacks****:** 关键指标! 记录所有回滚的事务数。user rollbacks** 是用户显式执行 ROLLBACK 的数量,而 transaction rollbacks 包含所有回滚,主要是由 PMON 在进程失败时自动触发的回滚。 高 transaction rollbacks 减去 user rollbacks 可能指示较高的进程失败率。deadlocks detected: PMON 检测到的死锁次数。enqueue timeouts: 锁等待超时次数(与死锁不同)。V$INSTANCE_RECOVERY******:** 查看实例恢复相关的统计,其中 PMON_CLEANED_COUNT 可能记录了 PMON 清理的进程数量(具体视图和统计项可能因版本而异)。lsnrctl status**):Services Summary... Instance "<instname>", status READY)。如果状态异常(如 UNKNOWN, BLOCKED),可能涉及 PMON/LREG 注册问题。PMON 故障的后果极其严重:
PMON (Process Monitor) 是 Oracle 数据库体系结构中不可或缺的核心后台进程,扮演着清道夫 (Cleaner)、恢复协调员 (Recovery Coordinator) 和死锁终结者 (Deadlock Killer) 的关键角色。
V$SYSSTAT******:** transaction rollbacks (对比 user rollbacks), deadlocks detected。V$SESSION / V$PROCESS******:** 锁争用等待事件、PMON 自身状态。lsnrctl status******:** 实例服务注册状态。理解 PMON 的运作原理,对于诊断会话异常断开后的锁遗留问题、分析死锁原因、排查实例不稳定因素以及深刻理解 Oracle 的故障恢复机制至关重要。它是 DBA 在维护数据库健壮性时必须掌握的核心后台进程知识。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。