Mostrando entradas con la etiqueta Oracle. Mostrar todas las entradas
Mostrando entradas con la etiqueta Oracle. Mostrar todas las entradas

miércoles, 6 de junio de 2012

Errores ORA-0134 y ORA-27101

Errores:

ORA-0134: ORACLE not availabe
ORA-27101: shared memory realm does not exist

Estos errores suelen darse juntos cuando el Listener de Oracle está levantado, pero la BBDD Oracle no.
Lo único que tenemos que hacer es arrancar el Oracle.

¿Cómo?

Con el usuario
su - oracle
ejecutamos
bash-3.00$ sqlplus "sys as sysdba"

SQL*Plus: Release 11.2.0.3.0 Production on Wed Jun 6 09:58:47 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Enter password:
Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  689217536 bytes
Fixed Size                  2162384 bytes
Variable Size             629145904 bytes
Database Buffers           50331648 bytes
Redo Buffers                7577600 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
bash-3.00$

y ya tenemos nuestra BBDD levantada. El error no se volverá a dar (o será otro)

Podéis encontrar más info aquí.

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