关于ORA-01012这个错误,惜分飞的博客ORA-01012: not logged on里面已经做了一些介绍,原因就不多说了,看看他的描述说明:
现象说明:
1)终于发现了ORA-01012错误,期待了很久。发现只有当sys登录系统,对数据库进行查询或者操作之时才会出现ORA-01012,其他用户只要一登录数据库就会提示ORA-00020错误。
2)当process达到数据库最大限时,sysdba登录系统是也显示不正常
2.1)当使用sqlplus “/ as sysdba”登录时,缺少:
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 – Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 – Production
2.2)当使用conn / as sysdba登录时,提示为:
Connected to an idle instance.
解决方法:
1:重启监听服务
1.1: 停止监听服务,等数据库访问连接数下降用户再登录。
lsnrctl stop
1.2: sqlplus “/ as sysdba”登陆后,修改processes值。(这一步可用也可以不用)
方法虽好,但是在生产环境却不方便使用,一来停止监听服务会导致应用程序问题,用户投诉,这个适合在晚上或维护时间处理。是治标治本的方法。
2: sqlplus “/ as sysdba”登陆后
shutdonwn abort
3: ps -ef|grep ora_dbw0_$Oracle_SID
kill -9 pid ;
startup --重启数据库
这个方法慎用,谁要是提倡使用,我保证不打死他……。我用过一次,提心吊胆的。不怕死的可以试试。
另外我在这篇文章ORA-12516:TNS:listener could not find available handler with matching protocol stack里面也介绍过这种情况。
参考资料: