找不到的数据库进程
上一篇 /
下一篇 2008-06-25 23:36:34
/ 个人分类:Oracle随记
下午正在给客户干活,一个朋友突然发了个message过来,说要问我个奇怪的问题。好像有不少人都问过我“奇怪”的问题,看看吧。朋友发过来一些信息:
CPU TTY PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPU COMMAND 0
? 12940 oracle 241 20 2755M 3380K run 23:44 64.87 64.76 oracleDYKMESV2 3
? 29298 oracle 154 20 2756M 4468K sleep 13549:54 21.25 21.21 oracleDYKMESV2 1
? 6762 oracle 154 20 2756M 4300K sleep 2934:19 13.59 13.57 oracleDYKMESV2
他试图查找这些OS进程在数据库中对应的会话进程,通过下面的语句:
SQL> select pid,spid from v$process 2 where pid in ('12940','29298','6762');
未选定行
结果是一无所获,没有找到任何进程,奇怪吧。。。其实也不奇怪,搞错了v$process中字段的含义了。
在v$process中,真正对应服务进程的是spid字段,也就是system process id,而他则习惯性的使用了pid字段,当然找不到拉,呵呵,如下:
CPU TTY PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPU COMMAND 2
? 8193 oracle 154 20 4375M 8060K sleep 0:07 4.79 4.78 oraclepepsi 2
? 8041 oracle 154 20 4375M 7804K sleep 0:28 3.47 3.46 oraclepepsi 2
? 25132 oracle 154 20 4359M 7932K sleep 0:43 3.33 3.32 oraclepepsi
SQL> select USERNAME,PID,SPID from v$process where spid=8193;
USERNAME PID SPID
--------------- ---------- ------------
oracle 25 8193
SQL> select USERNAME,PID,SPID from v$process where spid=8041;
USERNAME PID SPID
--------------- ---------- ------------
oracle 58 8041
告诉他这个答案,他也想起来是搞错了,呵呵,不过问题还没结束,当他把错误纠正过来再次执行的时候,奇怪的事情出现了,还是没找到。。。
有点问题,想了想,是不是进程已经断开了? 不是,他回答道。。。难道是死进程?不对,该进程还在不断消耗着空间。。。有点意思啊,确实有点“奇怪”。。。就在我绞尽脑汁,充分发挥想象力的时候,这个哥们很不好意思的发过来一个消息,我直接晕倒——他们这台机器有多个库,他查错库了!。。。
呵呵,从这个事情看,有时候问题并不一定是那么复杂,答案也许就在转念之间,同时也提醒我们,谨慎而行永远是减少错误的第一要素。周末我要搞得库正好也是单机多库,看来正好给自己了一个提醒阿。
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: