4
May

ORA-01078 ORA-29701

Sintomas:

Al iniciar la instancia de ASM se producen los siguientes errores:
grid>sqlplus / as sysasm

SQL>startup;

ORA-01078: failure in processing system parameters

ORA-29701: unable to connect to Cluster Synchronization Service

Reproducción del problema:

Ambiente:          Base de datos 11.2.0.3 con ASM sobre OEL 6 64 bits.
ps -ef |grep pmon

grid      5893     1  0 11:36 ?        00:00:01 asm_pmon_+ASM

oracle    5973     1  0 11:36 ?        00:00:02 ora_pmon_orcl

oracle>sqlplus / as sysdba

SQL>shutdown immediate;

grid>sqlplus / as sysasm

SQL>shutdown immediate;

-Se reinicia el servidor
root>reboot -f
-post-reinicio los servicios no levantaron automaticamente
grid>sqlplus / as sysasm

SQL>startup;

ORA-01078: failure in processing system parameters

ORA-29701: unable to connect to Cluster Synchronization Service

Explicación:

El CRS tiene la capacidad de conocer el estado en el que los servicios (bd y asm) se encontraban al momento del reinicio, de tal manera que cuando el servidor se reinicie y vuelva a iniciar el CRS, dejará todos los servicios como estaban. Entonces cuando se desea levantar manualmente post-reinicio el servicio de ASM (sqlplus / as sysasm, startup) es cuando se producen los siguientes errores:
ORA-01078: failure in processing system parameters

ORA-29701: unable to connect to Cluster Synchronization Service

La solucion para este caso puntual sería iniciar asm con “srvctl” y con usuario oracle: srvctl start asm;

Más no con sqlplus.
Esto no deberia pasar si modificamos la  propiedad AUTO_START=always dentro del CRS, esto hará que aunque los servicios fueron encontrados abajo al bajar el CRS, los vuelva a levantar una vez iniciado nuevamente el CRS. El valor “always” no es el default de oracle, el default es “restart”.
AUTO_START puede tomar uno de los siguientes valores:
always=siempre levantará los servicios
never= nunca levantará los servicios
restore=dejará los servicios en el estado en el que se encontraban antes del reinicio.
Para ver qué valor de AUTO_START tiene cada servicio, ejecutar el siguiente comando:
crsctl status resource ora.orcl.db -p | grep AUTO_START
crsctl status resource ora.asm -p | grep AUTO_START

Soluciones:

1. Dejar que el CRS baje todos los servicios (no bajarlos manualmente):
1.1 logearse con el usuario root
1.2 export ORACLE_HOME=

1.3 export PATH=$ORACLE_HOME/bin:$PATH

1.4 crsctl stop crs
1.5 reiniciar el servidor
2. Cambiar el parametro AUTO_START al valor always, de esta manera aunque se baje manualmente servicio por servicio, cuando reinicie el CRS volverá a levantar todos los servicios.
(Estos pasos solo los tendrán que realizar una vez)
2.1 logearse con el usuario grid

2.2 crsctl modify resource ora.asm -attr AUTO_START=always

2.3 crsctl modify resource ora.orcl.db -attr AUTO_START=always

Siempre que se reinicie el servidor, voverá a levantar todos los servicios.


Facebooktwitterlinkedinmailby feather