我得到Oracle最大进程超出错误。为了增加允许的最大进程,我以sysdba:
的身份登录$ sqlplus / as sysdba
我尝试查看进程参数:
sql> show parameter processes
ERROR:
ORA-01012: not logged on
我认为由于超出了进程,sqlplus无法登录。
我尝试关闭实例,以便关闭进程:
SQL> shutdown immediate
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-00020: maximum number of processes (%s) exceeded
我试图杀死Oracle服务,这应该会杀死进程:
$ sudo service oracle-xe restart
[sudo] password for kshitiz:
Shutting down Oracle Database 10g Express Edition Instance.
Stopping Oracle Net Listener.
Starting Oracle Database 10g Express Edition Instance.
我再次以sysdba身份登录,但它也会出现同样的错误。
如何终止进程以便数据库再次可管理?我该如何诊断出现此错误的原因(哪个应用程序负责占用数据库)?
我在Oracle 10g express
和Ubuntu 13.10
。
答案 0 :(得分:0)
解决方案是增加允许的最大进程数。但问题是在这种状态下没有办法这样做,因为DB不会接受任何命令。即使增加过程参数的命令也会使最大过程超出错误。
终止属于oracle
用户的所有进程:
$ sudo su
$ su oracle
$ kill -9 -1
检查所有进程是否已被终止:
$ ps -ef | grep oracle
如果不是使用kill -9 PID
杀死他们。现在以sysdba
:
$ su oracle
$ sqlplus / as sysdba
关闭数据库(1.立即关机可能无法正常工作并发出同样的ORA-01012
错误.2。由于进程被终止,数据库是否已经关闭?这就是我的想法,但它似乎保持不变最后一个状态的记录或在运行以下命令之前尚未清除的记录):
SQL> shutdown abort
现在再次提起它:
SQL> startup
修改processes参数以防止此问题再次发生:
SQL> select count(*) from v$process;
SQL> alter system set processes=300 scope=spfile;
重启数据库:
SQL> shutdown immediate
SQL> startup
检查最大进程是否已增加:
SQL> show parameter processes
修改强> 在所有这一切之后由于一些奇怪的原因我的应用程序没有连接到DB,尽管SQL plus工作得很好。所以作为最后一步,我重新启动了oracle服务:
$ sudo service oracle-xe restart
这让一切都适合我。