jueves, 1 de julio de 2010

Cambiar de Estado UNKNOWN a los Servicios de RAC ORACLE


SRVCTL no puede iniciar los servicios de RAC debido a estado UNKNOWN


Existen algunas ocasiones en las que el comando srvctl no puede levantar los servicios del RAC, debido a lo que oracle define como un error:

CRS-0223: Resource 'ora.nodo.xxx.xxx' has placement error.

Esto se debe a que algunos servicios de oracle tienen el estado de UNKNOWN como se muestra a continuación:

node68:/u01>$CRS_HOME/bin/crs_stat -t | grep 68
 
ora....TA4.srv   application ONLINE     UNKNOWN    node68
ora....SM4.asm   application ONLINE     UNKNOWN    node68
ora....68.lsnr   application ONLINE     UNKNOWN    node68
ora....d68.gsd   application ONLINE     ONLINE     node68
ora....d68.ons   application ONLINE     ONLINE     node68
ora....d68.vip   application ONLINE     ONLINE     node68

Como se puede notar existen varios servicios que muestran UNKNOWN en el estado, esto se soluciona con el siguiente procedimiento:

1.- Utilizamos el comando

$CRS_HOME/bin/crs_stat -l
Para obtener el nombre completo del recurso.

2. El comando

$CRS_HOME/bin/crs_stop -f nombre_del_recurso

Forza el detenimiento de dicho recurso y cambia su estado de UNKNOWN a OFFLINE y STOP.

Se realiza este procedimiento para cada recurso que presente el estado UNKNOWN y lo recomendable es de ser posible DETENER TODOS LOS DEMÁS SERVICIOS para proceder levantarlos de manera conjunta.

Manejar Servicios de Oracle RAC


La forma de levantar/detener los servicios de una base de datos con opción RAC es diferente de una base de datos standalone. A continuación se presenta, a manera de guía, un procedimiento para levantar/detener/validar los servicios manualmente. Todos estos comandos deben ser ejecutados con el usuario oracle, excepto donde se indica.
El orden en que se levantan/detienen los servicios es importante, siendo el orden adecuado el siguiente:

Levantar:
  1. 1º Los servicios,
  2. 2º La instancia ASM,
  3. 3º La base de datos.
Detener:
  1. 1º La base de datos,
  2. 2º La instancia ASM,
  3. 3º Los servicios.

Base de datos:
Levantar
$ srvctl start database -d DBNAME
Detener
$ srvctl stop database -d DBNAME
Status
$ srvctl status database -d DBNAME
ASM:
Levantar
$ srvctl start asm -n nodo1
$ srvctl start asm -n nodo2
Detener
$ srvctl stop asm -n nodo1
$ srvctl stop asm -n nodo2
Status
$ srvctl status asm -n nodo1
$ srvctl status asm -n nodo2

Servicios de RAC (VIP, ONS, GSD y listener):
Levantar
$ srvctl start nodeapps -n nodo1
$ srvctl start nodeapps -n nodo2
Detener
$ srvctl stop nodeapps -n nodo1
$ srvctl stop nodeapps -n nodo2
Status
$ srvctl status nodeapps -n nodo1
$ srvctl status nodeapps -n nodo2

Clusterware:
En caso de ser necesario manejar el clusterware (CRS) manualmente, los siguientes comandos deben ser ejecutados con el usuario root:
Levantar
# $CRS_HOME/bin/crsctl start crs
Detener
# $CRS_HOME/bin/crsctl stop crs
Status(1)
# $CRS_HOME/bin/crsctl check crs