jueves, 21 de enero de 2021

ASM Disk Header Corruption

 Ok... Luego de una migracion de discos de ASM de un storage a otro y un reinicio del servidor... un disco me quedo con estado fuera del listado de discos del oracleasm... 

Lo agrege nuevamente y ahora era visible por la instancia ASM pero con el estado PROVISIONED en su cabecera....

Lo cual no permitia que el diskgroup fuese montado. 

Aplique esta solucion:


https://sites.google.com/site/wikiofdba/courses/med300/asm-disk-header-corruption


Buscar loS discos con problemas

SQL> select name,path ,header_status,mount_status from v$asm_disk;


Ojo, antes de realizar este paso tuve que agregar nuevamete el disco mediante oracleasm ya que nisiquiera estaba en el listado de discos

# oracleasm createdisk DATA_N02 /dev/dm-23

Ahora compilar y utilizar la herramienta:

kfed

[oracle@xxxx ~]$ cd $ORACLE_HOME/rdbms/lib
[oracle@xxxxx lib]$ make -f ins_rdbms.mk ikfed


Linking KFED utility (kfed)
rm -f /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/kfed
gcc -o /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/kfed -m64 -z noexecstack -L/oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ -L/oracle/app/oracle/product/11.2.0/dbhome_1/lib/ -L/oracle/app/oracle/product/11.2.0/dbhome_1/lib/stubs/  /oracle/app/oracle/product/11.2.0/dbhome_1/lib/s0main.o /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/sskfeded.o /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/skfedpt.o -ldbtools11 -lcommon11 -lcell11 -lskgxp11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11 -locr11 -locrb11 -locrutl11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11  -lasmclnt11 -lclntsh  `cat /oracle/app/oracle/product/11.2.0/dbhome_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /oracle/app/oracle/product/11.2.0/dbhome_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /oracle/app/oracle/product/11.2.0/dbhome_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /oracle/app/oracle/product/11.2.0/dbhome_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11   -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11   `cat /oracle/app/oracle/product/11.2.0/dbhome_1/lib/sysliblist` -Wl,-rpath,/oracle/app/oracle/product/11.2.0/dbhome_1/lib -lm    `cat /oracle/app/oracle/product/11.2.0/dbhome_1/lib/sysliblist` -ldl -lm   -L/oracle/app/oracle/product/11.2.0/dbhome_1/lib
test ! -f /oracle/app/oracle/product/11.2.0/dbhome_1/bin/kfed ||\
       mv -f /oracle/app/oracle/product/11.2.0/dbhome_1/bin/kfed /oracle/app/oracle/product/11.2.0/dbhome_1/bin/kfedO
mv /oracle/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/kfed /oracle/app/oracle/product/11.2.0/dbhome_1/bin/kfed
chmod 751 /oracle/app/oracle/product/11.2.0/dbhome_1/bin/kfed

Cruzar los dedos y esperar que funcione correctamente

[oracle@xxxx lib]$ kfed repair /dev/oracleasm/disks/DATA_N02

Consultar nuevamente y validar que el estado del disco sea MEMBER

select name,path ,header_status,mount_status from v$asm_disk;


Luego que todos los discos aparezcan como MEMBER intentar montar el diskgroup nuevamente.