深入解析pmon

我们在平时处理故障时甚至进行优化时,必须了解一些进程的原理,否则很难定位到根本的原因。在Oracle实例的核心进程中,Pmon进程也是一个极为关键的进程之一,这里我们将逐步揭开pmon进程的神秘面纱!
Pmon是Process Monitor process的简称。

PMON的主要作用:

  • pmon进程会被定期唤醒,来清理dead process,并释放dead process持有的资源(latch and lock)
  • 回滚dead transaction,前_cleanup_rollback_entries个undo entries
  • 动态注册服务
  • 监控后台进程,如果核心进程crash,pmon负责终止实例
  • rac服务端负载均衡,PMON进程每3秒会将各自节点的负载及连接数更新到service_register里面

1)通过event 10246和KST跟踪来验证pmon清理dead process以及dead transaction

pmon trace:

smon trace:

测试总结:

  • pmon通过轮询方式去检测dead process,轮询间隔为_dead_process_scan_interval,并清理dead process
  • 事务回滚每次回滚_cleanup_rollback_entries个undo entries
  • pmon会清理dead process持有的资源(lock and latch)
  • pmon会负责dead transaction的回滚工作,但只负责未超过_cleanup_rollback_entries
  • undo entries的部分,如果超过则post通知smon(SMON posted for undo segment recovery统计次数会+1),剩下由smon来完成剩余的回滚工作

2)监控后台进程,如果核心进程crash,pmon负责终止实例

哪些后台进程crash,实例会down掉?

3)动态注册服务

可以参考mos文档How to Trace Dynamic Registration from PMON ? [ID 787055.1]

  1. Enable Oracle Net Server tracing, adding following to SQLNET.ORA.
  2. Add to the listener.ora file the following and reload the listener via listener control
  3. Set event for PMON

     
此条目发表在Oracle分类目录,贴了标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注