A menudo se puede conseguir Recursos de Oracle RAC en un estado desconocido y esto es bastante molesto porque usted no será capaz de utilizar srvctl para gestionar ese recurso, para ponerlos en marcha y pararlos.
Hay una forma de solucionarlo y os voy a mostrar cómo lo he resuelto en un Exadata RAC de 2 nodos.
Comprobemos primero un recurso que se encuentra en estado desconocido:
[oracle@xjhd01db02:PRO02INT2 ~]$ crsctl status res ora.pro02int.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.pro02int.db
1 ONLINE ONLINE xjhd01db01 Open,HOME=/u01/app/o
racle/product/19.0.0
.0/dbhome_1,STABLE
2 ONLINE UNKNOWN xjhd01db02 STABLE
--------------------------------------------------------------------------------
El recurso en el nodo 2 está en estado desconocido.
Primero intento parar y eliminar la instancia, pero el cluster no me deja.
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl stop instance -d PRO02INT -i PRO02INT2
PRCR-1191 : The stop request failed because the resource is not running on nodes xjhd01db02.
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl remove instance -d PRO02INT -i PRO02INT2
Remove instance from the database PRO02INT? (y/[n]) y
PRKO-3147 : Instance PRO02INT2 cannot be removed because it is the only preferred instance for service(s) PRO02INT_bkup1,PRO02INT_bkup2 for database PRO02INT
Dice que no puedo eliminar la instancia porque dos servicios tienen esa instancia como preferida.
Modifico esos recursos para tener la otra instancia como preferida.
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl modify service -d PRO02INT -s PRO02INT_bkup1 -n -i PRO02INT1
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl modify service -d PRO02INT -s PRO02INT_bkup2 -n -i PRO02INT1
Así que ahora puedo eliminar la instancia y añadirla de nuevo.
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl remove instance -d PRO02INT -i PRO02INT2
Remove instance from the database PRO02INT? (y/[n]) y
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl add instance -d PRO02INT -i PRO02INT2 -n xjhd01db02
Vuelvo a comprobarlo y veo que el recurso está ahora fuera de línea.
Buenas noticias 🙂 .
[oracle@xjhd01db02:PRO02INT2 ~]$ crsctl status res ora.pro02int.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.pro02int.db
1 ONLINE ONLINE xjhd01db01 Open,HOME=/u01/app/o
racle/product/19.0.0
.0/dbhome_1,STABLE
2 OFFLINE OFFLINE STABLE
--------------------------------------------------------------------------------
Ahora puedo iniciar la instancia.
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl start instance -d PRO02INT -i PRO02INT2
Compruebo los servicios y todo funciona correctamente.
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl status database -d PRO02INT
Instance PRO02INT1 is running on node xjhd01db01
Instance PRO02INT2 is running on node xjhd01db02
[oracle@xjhd01db02:PRO02INT2 ~]$ srvctl status service -d PRO02INT
Service PRO02INT_bkup1 is running on instance(s) PRO02INT1
Service PRO02INT_bkup2 is running on instance(s) PRO02INT1
Service PRO02INTplug is running on instance(s) PRO02INT1
Espero que te haya sido útil.