Corrupção no header do disco do ASM:
Sintoma:
Após o reboot dos servidores do Oracle RAC 10gR2 (10.2.0.4) o ASM não consegue montar todos os diskgroups falhando com o erro abaixo:

ORA-15063: ASM discovered an insufficient number of disks for diskgroup “XXXX”

Problema:
No startup o ASM falhou com o erro abaixo:

ORA-15063: ASM discovered an insufficient number of disks for diskgroup “XXXX”

No alert log temos o seguinte erro, após a tentaviva de montar o DG:

ERROR: no PST quorum in group 3: required 2, found 0

Verificamos os seguintes pontos:

– ASMlib configurado e funcionando corretamente
– O DG não montava em nenhum nó
– As permissões dos discos do ASM no SO estavam corretas
– Era possivel acessar o disco de todos os nós usando o DD
– Era possivel verificar montar todos os outros discos do ASM em todos os nós

Após nossa investigação verificamos que esse erro está associado a uma corrupção no header do disco do ASM, indisponibilizando o ASM de ler as informações necessárias para montar o diskgroup

Solução:
Para verificar o status dos headers dos discos do ASM utilizamos o binario KFED, conforme informado nas notas abaixo:

kfed shows healthy ASm header for all the disks for DGDATA.(Note:1180491.1)
KFED.PL for diagnosing – ORA-15036 ORA-15042 ORA-15020 ORA-15033[Article ID 1346190.1]
ASM tools used by Support : KFOD, KFED, AMDU[Article ID 1485597.1]
Após compilarmos o binario no servidor executamos o seguinte comando:

kfed read <disco_do_asm> text=disco_output.txt

E realizamos a mesma operação mas para um disco que estava funcionando corretamente, depois disso comparamos os dois outputs e descobrimos que haviam (além dos parametros que obveamente mudariam, como nome, ID, SIZE e etc) dois parametros diferentes:

kfdhdb.acdb.ub2spare:
kfdhdb.ub4spare[43]:

Alteramos os parametros no arquivo gerado pelo kfed do disco com problemas e executamos o seguinte comando para gravar as alterações no header do disco:

kfed write <DISCO> TEXT=<arquivo editado>

Depois disso rebotamos as instances do ASM e conseguimos montar os discos.

Comentários:
KFED OPTIONS:

kfed -help
as/mlib ASM Library [asmlib=’lib’]
aun/um AU number to examine or update [AUNUM=number]
aus/z Allocation Unit size in bytes [AUSZ=number]
blkn/um Block number to examine or update [BLKNUM=number]
blks/z Metadata block size in bytes [BLKSZ=number]
ch/ksum Update checksum before each write [CHKSUM=YES/NO]
cn/t Count of AUs to process [CNT=number]
d/ev ASM device to examine or update [DEV=string]
o/p KFED operation type [OP=READ/WRITE/MERGE/NEW/FORM/FIND/STRUCT]
p/rovnm Name for provisioning purposes [PROVNM=string]
s/eek AU number to seek to [SEEK=number]
ty/pe ASM metadata block type number [TYPE=number]
te/xt File name for translated block text [TEXT=string]

 

Colaboração do amigo Hermes Pimentel, colega na empresa! Grande abraço! 🙂

Colaboração² do amigo Carlos Eduardo, executor da façanha! Grande abraço! 🙂

att

Vitor Jr