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 !
This makes perfect sense to anyone
LikeLike