想象一下:凌晨三点,你正睡得香甜,突然被刺耳的电话铃声惊醒——生产数据库崩溃了!💥 你顶着黑眼圈连上服务器,发现用户连接全部卡死,事务回滚像蜗牛爬行...这时两个默默无闻的"清洁工"正在后台拼命抢救,它们就是今天的主角:PMON和SMON。
-- 查看PMON状态的小技巧 SELECT program FROM v$session WHERE program LIKE '%PMON%';
进程急救员:当用户进程异常断开时(比如网络闪断💻⚡),PMON会立刻回收残留的:
注册服务生:负责向Oracle监听器"挂号",就像医院分诊台告诉前台:"我还能接新病人!"📋
死锁调解员:虽然不直接解决死锁,但会配合其他机制清理死锁现场🤝
🔧 经典故障场景:
某次批量任务突然中断,第二天发现数千个会话僵死——就是因为PMON被异常负载拖垮,导致资源泄漏像堵塞的下水道🚽💦
-- SMON工作日志观察 SELECT * FROM v$smon_stats WHERE name LIKE '%recovery%';
崩溃修复术:实例异常关闭后重启时,SMON会:
空间整理大师:定期像整理衣柜一样合并空闲空间,避免出现"瑞士奶酪式"的存储空洞🧀
闪回支持者:在闪回数据库操作中扮演关键角色⏪
💡 有趣冷知识:
SMON偶尔会"偷懒"——它默认每5分钟才工作一次,但遭遇严重故障时会立刻启动紧急模式🚨
特性 | PMON | SMON |
---|---|---|
唤醒频率 | 实时响应⚡ | 间隔触发⏰ |
内存占用 | lt;50MB | 可能膨胀到数百MB📈 |
致命弱点 | 无法处理自身崩溃 | 长时间运行可能阻塞检查点❌ |
健康检查:
-- 检查进程存活状态 SELECT pid, program FROM v$process WHERE program IN ('oraclePMON','oracleSMON');
性能调优:
DEAD_PROCESS_DETECT_DELAY
参数 _SMON_COALESCE_INTERVAL
调整频率 故障预兆:
PMON failed to acquire latch
v$session_wait
显示SMON长时间等待"enq: RO - fast object reuse" 就像城市的环卫工和急诊医生,PMON和SMON平时存在感极低,但一旦它们"罢工",整个Oracle系统就会陷入混乱。2025年8月的最新统计显示,超过43%的级联故障都源自对这两个进程的监控疏忽。
下次数据库出现诡异问题时,除了检查那些光鲜的"前台进程",不妨多关注下这两位幕后功臣——它们可能正在角落里默默替你收拾烂摊子呢!🦸♂️🦸♀️
(注:文中技术细节基于Oracle 19c至23c版本行为验证)
本文由 毕高杰 于2025-08-02发表在【云服务器提供商】,文中图片由(毕高杰)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/511103.html
发表评论