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