Today I wanted to fine tune an Oracle DB memory consumption. I started to modifying a few parameters in initSID.ora files (links to all of them are in $ORACLE_HOME/dbs).

As part of the process I also changed processes parameter. To 20 – I know very stupid idea. I mean, I know now. I did usual dbshut and was about to do dbstart, but I have noticed that some DB processes are running. And they didn’t respond on usual kill command either. So I did second stupid thing – killed them with -9.

But what was my surprise when I saw following in startup.log:

SQL> ERROR:
ORA-00020: maximum number of processes (20) exceeded

$ORACLE_HOME/bin/dbstart: Database instance "MYDB" warm started.

and it wasn’t possible to login to the DB. Not even using sys user:

sqlplus / as sysdba

I had to ask my colleague and the reason for this behaviour was that there stayed 2 share memory blocks in the memory. Reboot would help, but you can use ipcs tool to delete the blocks:


$ ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x7d9f3370 4423680 oracle 660 4096 0
0x1e6e4598 4620289 oracle 660 4096 0

$ ipcrm -m 4423680
$ ipcrm -m 4620289
$ ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status

That way, the init*.ora files finally took effect.

Tags