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 删除。