Discos não aparecem no asm após o boot da máquina (ORA-15032 ORA-15017 ORA-15040 )



Em um ambiente Red Red Enterprise Linux 7.9 com Grid 19c após o restart da máquina alguns diskgroup não estão sendo montados devido a falta de discos.

NOTE: Instance updated compatible.rdbms to 10.1.0.0.0 for grp 3 (DGREDO).
2020-11-06T13:38:20.258524-03:00
SUCCESS: diskgroup DGREDO was mounted
ORA-15032: not all alterations performed
ORA-15017: diskgroup "DGRECO" cannot be mounted
ORA-15040: diskgroup is incomplete
ORA-15017: diskgroup "DGDATA" cannot be mounted
ORA-15040: diskgroup is incomplete

2020-11-06T13:38:20.286790-03:00
ERROR: ALTER DISKGROUP ALL MOUNT /* asm agent call crs *//* {0:0:239} */
2020-11-06T13:38:20.407035-03:00
NOTE: diskgroup resource ora.DGREDO.dg is online
2020-11-06T13:38:20.873938-03:00
Reconfiguration started (old inc 4, new inc 6)
List of instances (total 3) :

Se listarmos os discos via oracleasm, é possível ver que nem todos os discos estão sendo listados. Após fazer um scan e listar novamente os mesmos são identificados e é possível montar os DGs com problema.

[grid@lamimdb01 trace]$ oracleasm listdisks
DGDATA003
DGDATA004
DGDATA010
DGDATA011
DGDATA016
DGDATA017
DGDATA019
DGDATA022
DGDATA024
DGDATA025
DGDATA028
DGREDO001
DGREDO002
DGREDO003
DGREDO004

root@lamimdb01 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "DGDATA021"
Instantiating disk "DGDATA013"
Instantiating disk "DGDATA007"
Instantiating disk "DGRECO001"
Instantiating disk "DGRECO003"
Instantiating disk "DGRECO004"
Instantiating disk "DGRECO005"
Instantiating disk "DGRECO006"
Instantiating disk "DGRECO002"
Instantiating disk "DGDATA030"
Instantiating disk "DGDATA023"
Instantiating disk "DGDATA015"
Instantiating disk "DGDATA009"
Instantiating disk "DGDATA002"
Instantiating disk "DGDATA027"
Instantiating disk "DGDATA020"
Instantiating disk "DGDATA026"
Instantiating disk "DGDATA018"
Instantiating disk "DGDATA005"
Instantiating disk "DGDATA029"
Instantiating disk "DGDATA014"
Instantiating disk "DGDATA008"
Instantiating disk "DGDATA001"
Instantiating disk "DGDATA012"
Instantiating disk "DGDATA006"
[root@lamimdb01 ~]#  oracleasm listdisks
DGDATA001
DGDATA002
DGDATA003
DGDATA004
DGDATA005
DGDATA006
DGDATA007
DGDATA008
DGDATA009
DGDATA010
DGDATA011
DGDATA012
DGDATA013
DGDATA014
DGDATA015
DGDATA016
DGDATA017
DGDATA018
DGDATA019
DGDATA020
DGDATA021
DGDATA022
DGDATA023
DGDATA024
DGDATA025
DGDATA026
DGDATA027
DGDATA028
DGDATA029
DGDATA030
DGRECO001
DGRECO002
DGRECO003
DGRECO004
DGRECO005
DGRECO006
DGREDO001
DGREDO002
DGREDO003
DGREDO004

Este problema ocorre devido ao asmlib estar fazendo a leitura dos discos antes que o iSCSI ou o FCoE tenham sido carregados.

Conforme doc da Red Hat Oracle ASM not scanning iSCSI or FCoE disks during boot basta aplicar o workaround abaixo para correção deste problema.

Após aplicar o workaround, o problema foi corrigido e os discos reconhecido no boot da maquina.

Environment

  • Red Hat Enterprise Linux (RHEL) 7
  • iSCSI initiator
  • FCoE
  • Multipath
  • ASMLib

Issue

  • Oracle ASM disks don't mount automatically thus manual intervention is required.
  • Oracle ASM disks using iSCSI or FCoE and multipath not being scanned during the boot process.

Edit /lib/systemd/system/oracleasm.service unit adding the following parameters:

  • iSCSI

    [Unit]
    Description=Load oracleasm Modules
    Requires=multipathd.service iscsi.service  <---
    After=multipathd.service iscsi.service     <---
    [...]
    
  • FCoE

    [Unit]
    Description=Load oracleasm Modules
    Requires=multipathd.service fcoe.service  <---
    After=multipathd.service fcoe.service     <---
    [...]

Comentários