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.
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
LikeLike
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.
LikeLike
Gracias Miguel, olvidé mencionar que trabajo con ASM. Te envío luego la info solicitada.
LikeLike