ORA-15077: could not locate ASM instance serving a required diskgroup

Cuando agregamos diskgroups en el ASM, debemos revisar que se haya registrado correctamente en el spfile de ASM,
ya que este archivo es leido por la instancia al inicio y monta todos los discos que se encuentran alli especificados.

Es asi, que al levantar las instancias de BAse de Datos que tengamos disponibles, cada cual con su diskgroup asignado correctamente,
alguna Base no levante si no puede montar los discos previamente.

Veamos que sucede con este ejemplo , donde tengo dos nodos de RAC, y Dos Bases.

En el primer nodo la instancia de Base primer base levanto sin problemas, mientras que la segunda base , solo pudo levanta la instancia del primer nodo.

[oracle@saturno02 bin]$ srvctl start database -d DARPRO
PRKP-1001 : Error starting instance DARPRO1 on node saturno01
CRS-0215: Could not start resource 'ora.DARPRO.DARPRO1.inst'.

Como podemos ver, solo la instancia del nodo1 esta levantada.

[oracle@saturno02 bin]$ srvctl status database -d DARPRO
Instance DARPRO1 is not running on node saturno01
Instance DARPRO2 is running on node saturno02

Reviso el alert y no encuentro mucha informacion, tan solo me indica que la base no puede iniciar.

Ingreso al segundo nodo y ejecuto un startup desde la linea de comandos.

SQL> startup nomount
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+DARPRO_DG1/DARPRO/spfileDARPRO.ora'
ORA-17503: ksfdopn:2 Failed to open file +DARPRO_DG1/DARPRO/spfileDARPRO.ora
ORA-15077: could not locate ASM instance serving a required diskgroup

Queda claro en el error ORA-15077, que no puede localizar la instancia en el diskgroup.

Pero vamos a ver un poco mas en profundidad para asegurar que este fue nuestro problema realmente.

Con comandos de la consola de administracion (asmcmd) intento ingresar a cualquiera de los path de la base que se encuentra en el ASM.

[oracle@saturno02 bin]$ asmcmd
ASMCMD> cd +DARPRO_DG1/DARPRO/
asmcmd: diskgroup 'DARPRO_DG1' does not exist or is not mounted
ASMCMD> cd +DARPRO_DG1
asmcmd: diskgroup 'DARPRO_DG1' does not exist or is not mounted

Y utilizando en la misma consola el comando ls -l, nos lista los diskgroups y los de la base DARPRO, aparecen desmontados.

ASMCMD> ls -l
State       Type    Rebal  Unbal  Name
MOUNTED     EXTERN  N      N      MANUPRO_DG1/
MOUNTED     EXTERN  N      N      MANUPRO_DG2/
MOUNTED     EXTERN  N      N      MANUPRO_DG3/
MOUNTED     EXTERN  N      N      MANUPRO_DG4/
MOUNTED     EXTERN  N      N      MANUPRO_DG5/
DISMOUNTED          N      N      DARPRO_DG1/
DISMOUNTED          N      N      DARPRO_DG2/
DISMOUNTED          N      N      DARPRO_DG3/
DISMOUNTED          N      N      DARPRO_DG4/
DISMOUNTED          N      N      DARPRO_DG5/

ASMCMD> exit

Confirmado ! al leer el alert de la instancia de ASM compruebo que los discos nunca montaron.

[oracle@saturno02 ~]$ vi /u01/app/oracle/admin/+ASM/bdump/alert_+ASM2.log
NOTE: recovering COD for group 6/0xda58ac9f (MANUPRO_DG2)
SUCCESS: completed COD recovery for group 6/0xda58ac9f (MANUPRO_DG2)
NOTE: recovering COD for group 7/0xda58aca0 (MANUPRO_DG3)
SUCCESS: completed COD recovery for group 7/0xda58aca0 (MANUPRO_DG3)
NOTE: recovering COD for group 8/0xda58aca1 (MANUPRO_DG4)
SUCCESS: completed COD recovery for group 8/0xda58aca1 (MANUPRO_DG4)

Seteando las variables de ambiente, nos vamos al $ORACLE_HOME/dbs y editamos el init+ASM2.ora.

[oracle@saturno02 bin]$ cd $ORACLE_HOME/dbs/

[oracle@saturno02 dbs]$ ls -lth
total 52K
-rw-r-----  1 oracle oinstall   43 Mar 23 15:31 initDARPRO2.ora
-rw-r-----  1 oracle oinstall   88 Feb 11 12:22 initDARPRO2.ora.230310
-rw-r-----  1 oracle oinstall 2.0K May 27  2009 orapwDARPRO2
-rw-r-----  1 oracle oinstall   61 Apr  7  2009 afiedt.buf
-rw-r-----  1 oracle oinstall 2.1K Apr  7  2009 initDARPRO2.ora.old
-rw-rw----  1 oracle oinstall 1.6K Mar 31  2009 hc_DARPRO2.dat

Agregamos los nuevos discos en el parametro asm_diskgroups.

EJEMPLO

asm_diskgroups='DARPRO_DG1','DARPRO_DG2','DARPRO_DG3','DARPRO_DG4','DARPRO_DG5'

Nuestro archivo de inicio de ASM quedaria de la misma manera que muestro a continuacion.

##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################

###########################################
# Cluster Database
###########################################
cluster_database=true

###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/u01/app/oracle/product/10.2.0/db_asm/admin/+ASM/bdump
core_dump_dest=/u01/app/oracle/product/10.2.0/db_asm/admin/+ASM/cdump
user_dump_dest=/u01/app/oracle/product/10.2.0/db_asm/admin/+ASM/udump

###########################################
# Miscellaneous
###########################################
instance_type=asm

###########################################
# Pools
###########################################
large_pool_size=12M

###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=exclusive

asm_diskgroups='MANUPRO_DG1','MANUPRO_DG2','MANUPRO_DG3','MANUPRO_DG4',
'MANUPRO_DG5','DARPRO_DG1','DARPRO_DG2','DARPRO_DG3','DARPRO_DG4','DARPRO_DG5'

+ASM1.instance_number=1
+ASM2.instance_number=2

Al quedar seteado el parametro asm_diskgroups, en el proximo arranque levantara los disco de forma automatica.

Pero nos queda la tarea de levantar los discos a mano para no tener que reiniciar la instancia de ASM.
Nos logueamos a la consola de sqlplus y ejecutamos:

ALTER DISKGROUP DARPRO_DG1 MOUNT;
ALTER DISKGROUP DARPRO_DG2 MOUNT;
ALTER DISKGROUP DARPRO_DG3 MOUNT;
ALTER DISKGROUP DARPRO_DG4 MOUNT;
ALTER DISKGROUP DARPRO_DG5 MOUNT;

Me logueo con la consola asmcmd y lo confirmo.

[oracle@saturno02 bin]$ asmcmd
ASMCMD> ls -l
State    Type    Rebal  Unbal  Name
MOUNTED  EXTERN  N      N      MANUPRO_DG1/
MOUNTED  EXTERN  N      N      MANUPRO_DG2/
MOUNTED  EXTERN  N      N      MANUPRO_DG3/
MOUNTED  EXTERN  N      N      MANUPRO_DG4/
MOUNTED  EXTERN  N      N      MANUPRO_DG5/
MOUNTED  EXTERN  N      N      DARPRO_DG1/
MOUNTED  EXTERN  N      N      DARPRO_DG2/
MOUNTED  EXTERN  N      N      DARPRO_DG3/
MOUNTED  EXTERN  N      N      DARPRO_DG4/
MOUNTED  EXTERN  N      N      DARPRO_DG5/
ASMCMD> exit

Ahora si estamos en condiciones de:

  • Levantar nuestros discos de manera automatica.
  • Levantar nuestra instancia caida.

3 thoughts on “ORA-15077: could not locate ASM instance serving a required diskgroup

  1. Hola Juan Andres, quisiera hacer una consulta. Resulta que tengo configurado un Oracle Rac con 2 nodos 10g R2, bajo los cuales tengo 2 storage replicando los datos entre sí. El tema es que hicimos pruebas de failover, y al apagar el storage primario, los nodos se reinician y no pudieron iniciarse con normalidad pues no obtuvieron el quorum. Segun la info recopilada en el storage primario habían 3 discos de voto, y en el secundario 2 discos de voto. ¿Como hacer frente a esa situación?
    Saludos

    Like

    1. Manuel, en mi sitio primario como en el secundario tengo los vote en los filesytem formateados para cluster en OCFS2,.Con el comando mount veo si las particiones fueron montadas, que se corresponde con lo que tenes en el el fstab $ mount/dev/mapper/OCRA1 on /u05 type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local)/dev/mapper/OCRB1 on /u06 type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local)/dev/mapper/OCRC1 on /u07 type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local) $ ls u06/oracrs/vote2.crs$ ls u07/oracrs/vote3.crs$ ls u05/oracrs/ocr.crs vote.crs Me podras pegar el contenido de los vote que se montaron en ambos sitios ms la salida del comando mount ?De esa manera puedo hacer un anlisis del problema y guiarte por donde avanzara yo.

      Like

Comments are closed.