ASM | ORA-00020: maximum number of processes (n) exceeded

Backup screenshot
Image via Wikipedia

Cuando trabajamos en un ambiente donde tenemos multiples Bases de Datos que se conectan al storage por medio de ASM, puede ocurrir que el Párametro PROCESS se encuentre desbordado.

Muchas veces cuando finalizan la implementación , los instaladores no toman en cuenta cuantas instancias de Bases de Datos serán ( aproximadamente ) instaladas.  Generalmente dejan los valores default que le asigna al párametro el valor 40. Con estos valores de incio generalmente podemos trabajar con una instancia o dos , pero al momento de abrir procesos desde la instacia hacia la instancia ASM, puede que tengamos problemas como ocurrio en el caso que presentamos :

Problema:

Cuando voy a recuperar una base de datos , que ya comparte el storage con otras instancias más en el mismo servidor, arroja el siguiente error:

ORA-00020: maximum number of processes () exceeded

Vemos el ejemplo en directo:

RMAN> restore database ;

Starting restore at 02-AUG-11
Starting implicit crosscheck backup at 02-AUG-11
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=165 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=164 devtype=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: sid=73 devtype=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: sid=71 devtype=DISK
Crosschecked 6 objects
Crosschecked 14 objects
Finished implicit crosscheck backup at 02-AUG-11

Starting implicit crosscheck copy at 02-AUG-11
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4
Finished implicit crosscheck copy at 02-AUG-11

searching for all files in the recovery area
cataloging files...
no files cataloged

using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00002 to +DATA/ot2x1n/datafile/undotbs1.357.754665177
restoring datafile 00003 to +DATA/ot2x1n/datafile/sysaux.367.754665171
restoring datafile 00005 to +DATA/ot2x1n/datafile/undotbs2.359.754665177
restoring datafile 00006 to +DATA/ot2x1n/datafile/undotbs3.352.754665177
restoring datafile 00007 to +DATA/ot2x1n/datafile/t2_med1_dat.350.754665179
restoring datafile 00014 to +DATA/ot2x1n/datafile/t2_anses_hist.347.755092909
restoring datafile 00029 to +DATA/ot2x1n/datafile/t2_live_dat.363.754665173
channel ORA_DISK_1: reading from backup piece /tsm/t2/t2p/diario/20110704_OT2X1N_DBID1780381650_s21479_p1_dbf
channel ORA_DISK_2: starting datafile backupset restore
channel ORA_DISK_2: specifying datafile(s) to restore from backup set
restoring datafile 00001 to +DATA/ot2x1n/datafile/system.360.754665177
restoring datafile 00004 to +DATA/ot2x1n/datafile/users.354.754665177
restoring datafile 00012 to +DATA/ot2x1n/datafile/t2_dict_dat.353.754665179
restoring datafile 00013 to +DATA/ot2x1n/datafile/t2_anses_live.275.755092891
restoring datafile 00022 to +DATA/ot2x1n/datafile/t2_live_dat.368.754665171
restoring datafile 00025 to +DATA/ot2x1n/datafile/t2_hist_dat.364.754665173
restoring datafile 00026 to +DATA/ot2x1n/datafile/t2_nau_dat.348.754665179
channel ORA_DISK_2: reading from backup piece /tsm/t2/t2p/diario/20110704_OT2X1N_DBID1780381650_s21478_p1_dbf
channel ORA_DISK_3: starting datafile backupset restore
channel ORA_DISK_3: specifying datafile(s) to restore from backup set
restoring datafile 00010 to +DATA/ot2x1n/datafile/t2_anses_idx.338.755092863
restoring datafile 00011 to +DATA/ot2x1n/datafile/undotbs4.355.754665177
restoring datafile 00015 to +DATA/ot2x1n/datafile/t2_anses_nau.336.755092917
restoring datafile 00021 to +DATA/ot2x1n/datafile/t2_live_dat.369.754665171
restoring datafile 00024 to +DATA/ot2x1n/datafile/t2_hist_dat.365.754665173
restoring datafile 00027 to +DATA/ot2x1n/datafile/t2_hist_dat.358.754665177
restoring datafile 00028 to +DATA/ot2x1n/datafile/t2_aux_dat.351.754665179
channel ORA_DISK_3: reading from backup piece /tsm/t2/t2p/diario/20110704_OT2X1N_DBID1780381650_s21477_p1_dbf
channel ORA_DISK_4: starting datafile backupset restore
channel ORA_DISK_4: specifying datafile(s) to restore from backup set
restoring datafile 00008 to +DATA/ot2x1n/datafile/t2_med1_idx.346.754665183
restoring datafile 00009 to +DATA/ot2x1n/datafile/t2_live_dat.361.754665177
restoring datafile 00019 to +DATA/ot2x1n/datafile/sysaux.349.754665181
restoring datafile 00020 to +DATA/ot2x1n/datafile/t2_live_dat.366.754665171
restoring datafile 00023 to +DATA/ot2x1n/datafile/t2_hist_dat.362.754665173
channel ORA_DISK_4: reading from backup piece /tsm/t2/t2p/diario/20110704_OT2X1N_DBID1780381650_s21476_p1_dbf
ORA-19870: error reading backup piece /tsm/t2/t2p/diario/20110704_OT2X1N_DBID1780381650_s21478_p1_dbf
ORA-19504: failed to create file "+DATA"
ORA-17502: ksfdcre:4 Failed to create file +DATA
ORA-15055: unable to connect to ASM instance
ORA-00020: maximum number of processes () exceeded
ORA-15055: unable to connect to ASM instance
ORA-00020: maximum number of processes () exceeded
ORA-19870: error reading backup piece /tsm/t2/t2p/diario/20110704_OT2X1N_DBID1780381650_s21477_p1_dbf
ORA-19504: failed to create file "+DATA"
ORA-17502: ksfdcre:4 Failed to create file +DATA
ORA-15055: unable to connect to ASM instance
ORA-00020: maximum number of processes () exceeded
ORA-15055: unable to connect to ASM instance
ORA-00020: maximum number of processes () exceeded
ORA-19870: error reading backup piece /tsm/t2/t2p/diario/20110704_OT2X1N_DBID1780381650_s21476_p1_dbf
ORA-19504: failed to create file "+DATA"
ORA-17502: ksfdcre:4 Failed to create file +DATA
ORA-15055: unable to connect to ASM instance
ORA-00020: maximum number of processes () exceeded
ORA-15055: unable to connect to ASM instance
ORA-00020: maximum number of processes () exceeded

RMAN> shutdown immediate

database dismounted
Oracle instance shut down

RMAN>
Como lo solucionamos ?

Easy, vamos por a mirar la formula de cálculo de valor de parametro PROCESS según metalink.

Processes = 25 + 15n
Analicemos el cálculo

Donde n es la cantidad de instancias en el server que utilizan ASM para el storage.

Ahora modifico el párametro, en mi caso puse 300, pero esto es por que no solo voy a manejar dos o tres instancias, también estarán manejando procesos ARCH y LGWR .

Consultemos los párametros
SQL> sho parameter process

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes 		     integer	 0
db_writer_processes		     integer	 2
gcs_server_processes		     integer	 0
job_queue_processes		     integer	 0
log_archive_max_processes	     integer	 2
processes			     integer	 40

Agrego y pongo el valor de processes=300

SQL> alter system set processes=300 scope=spfile;

System altered.

Voy a tener que reiniciar la instancia de ASM ya que este proceso requiere el reinicio de la Base.
No se puede hacer en caliente.

SQL> shutdown immediate
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup
ASM instance startedTotal System Global Area  130023424 bytes
Fixed Size		    2082208 bytes
Variable Size		  102775392 bytes
ASM Cache		   25165824 bytes
ASM diskgroups mounted

Consultamos el parametro y ya podemos lanzar nuestro proceso nuevamente.

SQL> sho parameter process
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes 		     integer	 0
db_writer_processes		     integer	 2
gcs_server_processes		     integer	 0
job_queue_processes		     integer	 0
log_archive_max_processes	     integer	 2
processes			     integer	 300
SQL>

Siempre es importante a la hora de realizar un trabajo, planificar un posible crecimiento y adaptarlo a los parametros, por que si ocurriese esto en un ambiente productivo 7×24 donde es gran problema bajar la base principal para reiniciar el ASM, estariamos con dolor de cabeza.

Regards ! see you later !

One thought on “ASM | ORA-00020: maximum number of processes (n) exceeded

Comments are closed.