Problema no ASM: Discos com MOUNT_STATUS MISSING

Durante o Treinamento Oracle Maximum Availability Architecture, nós puxamos o cabo de força do Storage da Produção, para verificar se os Sites de Produção e DR continuam no ar, em um cenário de RAC Extended / RAC Stretched / RAC Geográfico.

Os dois Sites continuaram no ar, mas ao religar o Storage, vimos que estragamos 3 Discos.

SQL> select group_number, name, path, state, MOUNT_STATUS, HEADER_STATUS from v$asm_Disk order by path;

GROUP_NUMBER NAME			    PATH				STATE	 MOUNT_S HEADER_STATU
------------ ------------------------------ ----------------------------------- -------- ------- ------------
	   2 DATA0000			    /dev/oracleasm/disks/DISK00 	NORMAL	 CACHED  MEMBER
	   2 DATA0001			    /dev/oracleasm/disks/DISK01 	NORMAL	 CACHED  MEMBER
	   0				    /dev/oracleasm/disks/DISK02 	NORMAL	 CLOSED  MEMBER
	   0				    /dev/oracleasm/disks/DISK03 	NORMAL	 CLOSED  MEMBER
	   2 DATA0004			    /dev/oracleasm/disks/DISK04 	NORMAL	 CACHED  MEMBER
	   2 DATA0005			    /dev/oracleasm/disks/DISK05 	NORMAL	 CACHED  MEMBER
	   3 DATA0006			    /dev/oracleasm/disks/DISK06 	NORMAL	 CACHED  MEMBER
	   3 DATA0007			    /dev/oracleasm/disks/DISK07 	NORMAL	 CACHED  MEMBER
	   0				    /dev/oracleasm/disks/DISK09 	NORMAL	 CLOSED  MEMBER
	   1 DATA0010			    /dev/oracleasm/disks/DISK10 	NORMAL	 CACHED  MEMBER
	   1 CONFIG_0002		    /u01/shared_config15/rac01/asm01	NORMAL	 CACHED  MEMBER
	   3 _DROPPED_0003_FRA							FORCING  MISSING UNKNOWN
	   3 _DROPPED_0001_FRA							FORCING  MISSING UNKNOWN
	   1 _DROPPED_0000_CONFIG						FORCING  MISSING UNKNOWN

14 rows selected.

SQL>

Ou seja, três discos passaram a ter outro nome, em “outro disco”, com o nome de DROPPED, e com MOUNT_STATUS de MISSING, STATE de FORCING, e HEADER STATUS como UNKNOWN.

Eu não conseguia remover os discos do FAILGROUP, recebendo a mensagem de que eles não existiam.

Eu não conseguia adicioná-los ao FAILGROUP, pois recebia a mensagem de que eles já estavam montados. A única forma que eu encontrei de resolver esta situação foi adicioná-los com FORCE a um novo DISKGROUP, e então remover este novo DISKGROUP.

SQL> create diskgroup dummy external redundancy disk '/dev/oracleasm/disks/DISK02' force;

Diskgroup created.

SQL> drop diskgroup dummy;

Diskgroup dropped.

SQL> create diskgroup dummy external redundancy disk '/dev/oracleasm/disks/DISK03' force;

Diskgroup created.

SQL> drop diskgroup dummy;

Diskgroup dropped.

SQL> create diskgroup dummy external redundancy disk '/dev/oracleasm/disks/DISK09' force;

Diskgroup created.

SQL> drop diskgroup dummy;

Diskgroup dropped.

SQL>

Após esta operação, os discos passaram a ter o MOUNT_STATUS de FORMER.

SQL> select group_number, name, path, state, MOUNT_STATUS, HEADER_STATUS from v$asm_Disk order by path;

GROUP_NUMBER NAME			    PATH				STATE	 MOUNT_S HEADER_STATU
------------ ------------------------------ ----------------------------------- -------- ------- ------------
	   2 DATA0000			    /dev/oracleasm/disks/DISK00 	NORMAL	 CACHED  MEMBER
	   2 DATA0001			    /dev/oracleasm/disks/DISK01 	NORMAL	 CACHED  MEMBER
	   0				    /dev/oracleasm/disks/DISK02 	NORMAL	 CLOSED  FORMER
	   0				    /dev/oracleasm/disks/DISK03 	NORMAL	 CLOSED  FORMER
	   2 DATA0004			    /dev/oracleasm/disks/DISK04 	NORMAL	 CACHED  MEMBER
	   2 DATA0005			    /dev/oracleasm/disks/DISK05 	NORMAL	 CACHED  MEMBER
	   3 DATA0006			    /dev/oracleasm/disks/DISK06 	NORMAL	 CACHED  MEMBER
	   3 DATA0007			    /dev/oracleasm/disks/DISK07 	NORMAL	 CACHED  MEMBER
	   0				    /dev/oracleasm/disks/DISK09 	NORMAL	 CLOSED  FORMER
	   1 DATA0010			    /dev/oracleasm/disks/DISK10 	NORMAL	 CACHED  MEMBER
	   1 CONFIG_0002		    /u01/shared_config15/rac01/asm01	NORMAL	 CACHED  MEMBER
	   3 _DROPPED_0003_FRA							FORCING  MISSING UNKNOWN
	   3 _DROPPED_0001_FRA							FORCING  MISSING UNKNOWN
	   1 _DROPPED_0000_CONFIG						FORCING  MISSING UNKNOWN

14 rows selected.

SQL>

E então eu pude adicioná-los aos antigos FAILGROUPs.

SQL> alter diskgroup FRA add failgroup FAILGROUPA disk '/dev/oracleasm/disks/DISK02';

Diskgroup altered.

SQL> alter diskgroup FRA add failgroup FAILGROUPA disk '/dev/oracleasm/disks/DISK03';

Diskgroup altered.

SQL> alter diskgroup CONFIG add failgroup FAILGROUPA disk '/dev/oracleasm/disks/DISK09';

Diskgroup altered.

SQL>

Mas os discos estranhos continuavam existindo. Mas foi só esperar o REBALANCE, que eles sumiram, e os discos voltaram a sua configuração original, e tudo sem indisponibilidade, e nem perda de dados.

SQL> select group_number, name, path, state, MOUNT_STATUS, HEADER_STATUS from v$asm_Disk order by path;

GROUP_NUMBER NAME			    PATH				STATE	 MOUNT_S HEADER_STATU
------------ ------------------------------ ----------------------------------- -------- ------- ------------
	   2 DATA0000			    /dev/oracleasm/disks/DISK00 	NORMAL	 CACHED  MEMBER
	   2 DATA0001			    /dev/oracleasm/disks/DISK01 	NORMAL	 CACHED  MEMBER
	   3 FRA_0004			    /dev/oracleasm/disks/DISK02 	NORMAL	 CACHED  MEMBER
	   3 FRA_0005			    /dev/oracleasm/disks/DISK03 	NORMAL	 CACHED  MEMBER
	   2 DATA0004			    /dev/oracleasm/disks/DISK04 	NORMAL	 CACHED  MEMBER
	   2 DATA0005			    /dev/oracleasm/disks/DISK05 	NORMAL	 CACHED  MEMBER
	   3 DATA0006			    /dev/oracleasm/disks/DISK06 	NORMAL	 CACHED  MEMBER
	   3 DATA0007			    /dev/oracleasm/disks/DISK07 	NORMAL	 CACHED  MEMBER
	   1 CONFIG_0003		    /dev/oracleasm/disks/DISK09 	NORMAL	 CACHED  MEMBER
	   1 DATA0010			    /dev/oracleasm/disks/DISK10 	NORMAL	 CACHED  MEMBER
	   1 CONFIG_0002		    /u01/shared_config15/rac01/asm01	NORMAL	 CACHED  MEMBER
	   3 _DROPPED_0001_FRA							FORCING  MISSING UNKNOWN
	   3 _DROPPED_0003_FRA							FORCING  MISSING UNKNOWN
	   1 _DROPPED_0000_CONFIG						FORCING  MISSING UNKNOWN

14 rows selected.

SQL> select * from v$asm_operation;

GROUP_NUMBER OPERA STAT      POWER     ACTUAL	   SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
	   1 REBAL WAIT 	10

SQL> /

GROUP_NUMBER OPERA STAT      POWER     ACTUAL	   SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
	   1 REBAL WAIT 	10

SQL> /

GROUP_NUMBER OPERA STAT      POWER     ACTUAL	   SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
	   1 REBAL WAIT 	10

SQL> /

no rows selected

SQL> select group_number, name, path, state, MOUNT_STATUS, HEADER_STATUS from v$asm_Disk order by path;

GROUP_NUMBER NAME			    PATH				STATE	 MOUNT_S HEADER_STATU
------------ ------------------------------ ----------------------------------- -------- ------- ------------
	   2 DATA0000			    /dev/oracleasm/disks/DISK00 	NORMAL	 CACHED  MEMBER
	   2 DATA0001			    /dev/oracleasm/disks/DISK01 	NORMAL	 CACHED  MEMBER
	   3 FRA_0004			    /dev/oracleasm/disks/DISK02 	NORMAL	 CACHED  MEMBER
	   3 FRA_0005			    /dev/oracleasm/disks/DISK03 	NORMAL	 CACHED  MEMBER
	   2 DATA0004			    /dev/oracleasm/disks/DISK04 	NORMAL	 CACHED  MEMBER
	   2 DATA0005			    /dev/oracleasm/disks/DISK05 	NORMAL	 CACHED  MEMBER
	   3 DATA0006			    /dev/oracleasm/disks/DISK06 	NORMAL	 CACHED  MEMBER
	   3 DATA0007			    /dev/oracleasm/disks/DISK07 	NORMAL	 CACHED  MEMBER
	   1 CONFIG_0003		    /dev/oracleasm/disks/DISK09 	NORMAL	 CACHED  MEMBER
	   1 DATA0010			    /dev/oracleasm/disks/DISK10 	NORMAL	 CACHED  MEMBER
	   1 CONFIG_0002		    /u01/shared_config15/rac01/asm01	NORMAL	 CACHED  MEMBER

11 rows selected.

SQL>

[oracle@nerv01 ~]$ /u01/app/11.2.0.4/grid/bin/crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   38eea7a6d9794ffbbfdc3dd3d1cf284f (/dev/oracleasm/disks/DISK10) [CONFIG]
 2. ONLINE   5f19aff4d00d4fc6bfd3605ab8c78597 (/u01/shared_config15/rac01/asm01) [CONFIG]
 3. ONLINE   1807863ec7a64f6fbf66620eb66a10b7 (/dev/oracleasm/disks/DISK09) [CONFIG]
Located 3 voting disk(s).

[oracle@nerv01 ~]$ /u01/app/11.2.0.4/grid/bin/ocrcheck
Status of Oracle Cluster Registry is as follows :
	 Version                  :          3
	 Total space (kbytes)     :     262120
	 Used space (kbytes)      :       3484
	 Available space (kbytes) :     258636
	 ID                       :    1373850
	 Device/File Name         :    +CONFIG
                                    Device/File integrity check succeeded

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

	 Cluster registry integrity check succeeded

	 Logical corruption check bypassed due to non-privileged user

[oracle@nerv01 ~]$

3 comments

  1. Descobri uma forma muito mais fácil para que os discos voltem ao normal:

    SQL> SELECT GROUP_NUMBER, FAILGROUP, NAME, PATH FROM V$ASM_DISK ORDER BY 1,2;
    
    GROUP_NUMBER FAILGROUP			    NAME				PATH
    ------------ ------------------------------ ----------------------------------- -----------------------------------
    	   0									/dev/oracleasm/disks/DISK03
    	   0									/dev/oracleasm/disks/DISK02
    	   0									/dev/oracleasm/disks/DISK00
    	   0									/dev/oracleasm/disks/DISK09
    	   0									/dev/oracleasm/disks/DISK01
    	   1 FAILGROUPB 		    CONFIG_0000 			/dev/oracleasm/disks/DISK10
    	   1 FG1			    DATA0009
    	   1 FG3			    CONFIG_0002 			/u01/shared_config15/rac01/asm01
    	   2 FAILGROUPA 		    DATA_0000
    	   2 FAILGROUPA 		    DATA_0001
    	   2 FAILGROUPB 		    DATA_0002				/dev/oracleasm/disks/DISK04
    	   2 FAILGROUPB 		    DATA_0005				/dev/oracleasm/disks/DISK05
    	   3 FAILGROUB			    DATA0007				/dev/oracleasm/disks/DISK07
    	   3 FAILGROUB			    DATA0006				/dev/oracleasm/disks/DISK06
    	   3 FAILGROUPA 		    DATA0002
    	   3 FAILGROUPA 		    DATA0003
    
    16 rows selected.
    
    SQL> ALTER DISKGROUP DATA ONLINE ALL NOWAIT;
    
    Diskgroup altered.
    
    SQL> ALTER DISKGROUP FRA ONLINE ALL NOWAIT;
    
    Diskgroup altered.
    
    SQL> ALTER DISKGROUP CONFIG ONLINE ALL NOWAIT;
    
    Diskgroup altered.
    
    SQL> SELECT GROUP_NUMBER, FAILGROUP, NAME, PATH FROM V$ASM_DISK ORDER BY 1,2;
    
    GROUP_NUMBER FAILGROUP			    NAME				PATH
    ------------ ------------------------------ ----------------------------------- -----------------------------------
    	   1 FAILGROUPB 		    CONFIG_0000 			/dev/oracleasm/disks/DISK10
    	   1 FG1			    DATA0009				/dev/oracleasm/disks/DISK09
    	   1 FG3			    CONFIG_0002 			/u01/shared_config15/rac01/asm01
    	   2 FAILGROUPA 		    DATA_0001				/dev/oracleasm/disks/DISK01
    	   2 FAILGROUPA 		    DATA_0000				/dev/oracleasm/disks/DISK00
    	   2 FAILGROUPB 		    DATA_0002				/dev/oracleasm/disks/DISK04
    	   2 FAILGROUPB 		    DATA_0005				/dev/oracleasm/disks/DISK05
    	   3 FAILGROUB			    DATA0007				/dev/oracleasm/disks/DISK07
    	   3 FAILGROUB			    DATA0006				/dev/oracleasm/disks/DISK06
    	   3 FAILGROUPA 		    DATA0002				/dev/oracleasm/disks/DISK02
    	   3 FAILGROUPA 		    DATA0003				/dev/oracleasm/disks/DISK03
    
    11 rows selected.
    
    SQL>
    
  2. Fala Portilho,

    Olha que interessante (veja o link) :

    http://asmsupportguy.blogspot.com.br/2011_10_01_archive.html

    Again it depends. If you are on Exadata or Oracle Database Appliance, the disk is put back online automatically. In all other cases an ASM administrator has to put the disk online with an alter diskgroup command, like this:

    alter diskgroup DATA online disk ‘ORCL:DISK077’;

    or

    alter diskgroup DATA online all;

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.