接到研发电话,无法连上一台测试数据库(Oracle 10.2.0.5.0 - 64bit)。alert里看到
Sat Jun 11 00:23:52 CST 2011
Process m000 died, see its trace file
Sat Jun 11 00:23:52 CST 2011
ksvcreate: Process(m000) creation failed
Sat Jun 11 00:24:53 CST 2011
Process m000 died, see its trace file
Sat Jun 11 00:24:53 CST 2011
ksvcreate: Process(m000) creation failed
Sat Jun 11 00:25:54 CST 2011
Process m000 died, see its trace file
Sat Jun 11 00:25:54 CST 2011
ksvcreate: Process(m000) creation failed
sqlplus登录是connect状态,google之。
可以看到m000进程创建失败,PMON进程无法启动该进程。一般情况下,PMON无法启动进程原因有3个:1、Oracle连接数超过进程数限制。(正是由于Oracle达到了进程数限制,进而PMON无法创建m000进程 )2、进程死锁。3、bug
查看进程数量,比对spfile的process数量,果然是超过了限制
于是,关闭数据库的监听,(杀了些连接db的进程),连接数下降后,sqlplus正常,没有看到什么sql堵塞。开启监听后,连接数又立刻增加了。继续关闭监听,
netstat -anp|grep 1521|grep EST|awk '{print $5}'|awk -F : '{print $1}'|sort -rn|uniq -c
查看前端连接数,找到异常的ip。联系研发查看前端机器。由于暂时找不到前端的应用的问题,在sqlnet.ora里面限制此ip的连接。
tcp.validnode_checking=yes
tcp.excluded_nodes=(xx.xx.xx.xx)
重新开启监听。
其他:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production