Wednesday, September 10, 2008

ORA-00020: maximum number of processes () exceeded

 Thank you for visiting Spatial DBA - Oracle and ArcSDE.

Please visit Oracle DBA Tips (http://www.oracledbatips.com) for more Oracle DBA Tips.

===================================================================


ORA-00020: maximum number of processes (string) exceeded
Cause: All process state objects are in use.
Action: Increase the value of the PROCESSES initialization parameter.
Note:
The following error appeared in the Oracle alert.log:
……
Tue Sep 9 06:12:50 2008
Stopping background process CJQ0
Tue Sep 9 20:00:25 2008
Process m000 died, see its trace file
Tue Sep 9 20:00:25 2008
……
Tue Sep 9 21:30:15 2008
Starting background process CJQ0
Process CJQ0 died, see its trace file
Tue Sep 9 21:30:16 2008
Errors in file /oracle/admin/mydb/bdump/mydb_pmon_868.trc:
ORA-00444: background process "CJQ0" failed while starting
ORA-00020: maximum number of processes () exceeded
……
Wed Sep 10 02:18:02 2008
ksvcreate: Process(m000) creation failed
……
In /oracle/admin/mydb/bdump/mydb_pmon_868.trc:
*** SERVICE NAME:(SYS$BACKGROUND) 2008-09-09 21:30:16.611
*** SESSION ID:(170.1) 2008-09-09 21:30:16.610
*** 2008-09-09 21:30:16.610
Process CJQ0 is dead (pid=8412, state=3):
ORA-00444: background process "CJQ0" failed while starting
ORA-00020: maximum number of processes () exceeded
ORA-00450: background process 'CJQ0' did not start
ORA-00444: background process "CJQ0" failed while starting
ORA-00020: maximum number of processes () exceeded
Apparently Ora-00020 error is the cause of the issue. The current value for parameter PROCESSES is 150.
Use "ps" to check background processes (pmon, smon, etc) and they seem good.
Connect to the instance "AS SYSDBA" to check the database giving the below:
Connected to an idle instance.
The message is misleading because "Connected to an idle instance" means the instance you connected to "AS SYSDBA" is not started. However, if the instance is out of processes, then a non-SYSDBA connection will error out with ORA-00020, and a SYSDBA connection will error out with "Connected to idle instance."
Usually, when this happens, use the "ps" command to identify some of the oldest server processes, and kill the 3-5 oldest processes, and then quickly connect to the database, try to figure out which user is causing the problem. Once you're in, look at things like V$SESSION to try and determine which user(s) is (are) consuming so many connections, and then go from there.

All Oracle errors in the blog can be found at: Oracle errors
All ESRI ArcSDE errors in the blog can found at: ArcSDE Errors