miércoles, 7 de diciembre de 2011

Haciendo mis pinitos en Oracle: recursos en STOP_FAILED

En mi caso, alguna vez me he encontrado con que no se puede establecer una conexión entre un tomcat y una BBDD oracle; el error típico es el siguiente

[06/12/11 23:44:11:396] com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask run INFO: An exception occurred while acquiring a poolable resource. Will retry.
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
The Connection descriptor used by the client was:
192.168.168.168:1521:BBDD01


Al acceder al nodo activo de oracle, y ver el estado, hay un recurso que ha intentado pararse pero no ha podido. Para consultar el estado, ejecutamos

scstat -g

y obtenemos

-- Grupos de recursos y recursos --

            Nombre del grupo Recursos
            ---------------- --------
 Recursos:  grupo_recurso-rg servicio_01 servicio_02 servicio_03 servicio_n


-- Grupos de recursos --

            Nombre del grupo Nombre del nodo          Estado         Suspendido
            ---------------- ---------------          ------         ----------
     Grupo: grupo_recurso-rg BD1                     Error: parada no satisfactoria No
     Grupo: grupo_recurso-rg BD2                     Offline        No


-- Recursos --

            Nombre del recurso Nombre del nodo          Estado         Mensaje de estado
            ------------------ ---------------          ------         -----------------
  Recurso:  servicio_01    BD1                      Online         Online - LogicalHostname online.
  Recurso:  servicio_01    BD2                      Offline        Offline - LogicalHostname offline.

  Recurso:  servicio_02 BD1                     Online         Online
  Recurso:  servicio_02 BD2                     Offline         Offline

  Recurso:  servicio_03 BD1                     Online         Online
  Recurso:  servicio_03 BD2                     Offline         Offline

  Recurso:  servicio_n BD1                     Parada no satisfactoria Con fallo
  Recurso:  servicio_n BD2                     Offline       Offline

Localizamos que el problema está en el recurso servicio_pen-oracle_server del nodo BD11. El estado es STOP_FAILED. En este caso, lo que debemos hacer es poner el recurso en estado offline y después balancear el clúster al nodo pasivo para volver a tener servicio. Primer ejecutaremos

scswitch -c -h BD1 -j servicio_n -f STOP_FAILED

donde
-c: pasar a offline
-h: nodo
-j: recurso
-f: estado actual

Una vez ejecutado, nos devuelve el siguiente mensaje

scswitch: NOTICE: Operation succeeded, but resource group oracle-rg remains in ERROR_STOP_FAILED state on node server1 because some resources in the group remain
online while others are offline. To clear this condition, switch the resource group offline.

y ejecutamos el siguiente comando para pasar el grupo de recursos offline (es decir, todos los recursos, no sólo el que da problemas)

scswitch -F -g grupo_recurso-rg

Una vez ha finalizado, comprobamos que el todo ha quedado sin errores: scstat -g
Por último, para pasar el clúster al nodo inactivo, lo hacemos ejecutando

scswitch -z -g grupo_recurso-rg -h BD2

donde
-z: balanceo
-g: grupo de recursos
-h: nodo al que vamos a pasar el grupo de recursos

Una vez finalice, comprobamos que los servicios han quedado bien levantados con scstat -g


2 comentarios:

Radamanthys17 dijo...

Hola a que se debe ese error
An exception occurred while acquiring a poolable resource. Will retry.
a mi ya me ha dado en aplicaciones java pero al rato todo vuelve a funcionar de nuevo????

Esther dijo...

Hola!

A ver, no tengo casi idea de java, pero si posteas el error completo lo mismo podemos ver algo... Si luego todo vuelve a funcionar es posible que sólo sea un warning? Revisa este punto


Saludos!