"ORA-15040: diskgroup is incomplete" but diskgroup is mounted

Those days, I was creating a new database on a system and when I tried to create any file (spfile / pwfile / control file) on diskgroup, I started receiving the error below:

ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-15040: diskgroup is incomplete

Usually this error comes together with something like ORA-15042: ASM disk "1" is missing from group number "1", but in my case, there was no disk error. Also, the more strange thing is that all the diskgroups were mounted on all instances.

After researching, I discovered that this error is caused because oracle user does no have the necessary privilegies to handle the ASM disks.

So, checking the privileges:

# ls -la /dev/oracleasm/disks
total 0
drwxr-xr-x 1 root root           0 Mar 19  2015 .
drwxr-xr-x 4 root root           0 Mar 19  2015 ..
brw-rw---- 1 grid asmadmin 253,  3 Mar 19  2015 ARCHIVE
brw-rw---- 1 grid asmadmin 253,  2 Mar 19  2015 DATA
brw-rw---- 1 grid asmadmin 253,  5 Mar 19  2015 REDO01
brw-rw---- 1 grid asmadmin 253,  8 Mar 19  2015 REDO02

# id -a oracle
uid=101(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper),505(asmdba)

# id -a grid
uid=102(grid) gid=501(oinstall) groups=501(oinstall),502(dba),504(asmadmin),505(asmdba),506(asmoper)

$ ls -la $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 oracle asmadmin 239882703 Apr 15 2015 /u01/app/oracle/product/11.2.4/dbhome_1/bin/oracle

They were exactly as expected.

So, as a try, I added oracle user to asmadmin group in the OS to check if this could solve my problem:

# gpasswd -a oracle asmadmin

After restarting the instance, surprisingly my issue was solved.

Having oracle as an ASM admin is not a concern in my administration model as the DBA is also the Grid Administrator.

If you have the same issue, check if this solves your problem.

 

Have you enjoyed? Please leave a comment or give a 👍!

4 comments

Skip to comment form

    • Maicon Carneiro on May 3, 2020 at 12:56
    • Reply

    Rodrigo, eu tive o mesmo erro com uma causa raíz diferente, porém o seu post me ajudou a resolver também.

    Originalmente eu havia instalado o Grid no Oracle Linux 7.7 com kernel 4.14 e após reiniciar o sistema operacional selecionando o Kernel 3.10 para realizar um teste, o ASM não conseguiu rastrear os discos.

    a) Os discos apareciam no fdisk -l mas não eram listados no diretório /dev/oracleasm/disks.
    b) O comando oracleasm scandisks retornava: Unable to instantiate disk
    c) O comando oracleasm init retornava: Unable to load module "oracleasm"

    Após atualizar o oracleasm-support e kmod-oracleasm pelo yum, o problema foi resolvido.

      • Maicon Carneiro on May 3, 2020 at 14:07
      • Reply

      Uma correção quanto a minha resolução:

      Acabei de testar em outro ambiente e verifiquei que o que resolveu de fato foi a instalação do kmod-oracleasm.

      O Grid tinha sido configurado somente com o oracleasm-support instalado. No kernel 4.14 o ASM reconhecia os discos normalmente, o problema foi só depois de dar boot pelo kernel 3.10.

        • Maicon Carneiro on May 3, 2020 at 14:27
        • Reply

        Por fim, o motivo de ter funcionando no 4.14 sem a instalação do kmod-oracleasm.

        Deixei passar um detalhe: Não mudou somente a versão do kernel, a versão 4.14 era UEK (Unbreakable Enterprise Kernel) e a versão 3.10 era RHCK (Red Hat Compatible Kernel). O kmod-oracleasm vem instalado por padrão no kernel UEK, mas no RHCK precisa ser instalado manualmente.

        "Oracle ASMLib is included in the UEK kernel, but must be installed as a separate package for RHCK"
        Oracleasm Kernel Driver for the 64-bit (x86_64) Red Hat Compatible Kernel for Oracle Linux 6 (Doc ID 1578579.1)

    • Alakh Niranjan on July 8, 2022 at 17:35
    • Reply

    Saved my life.. Excellent post! 🙂 It gave me an idea to check oracle executable permissions.

    vqlofebsaxxxx05(glcdbua1) /u01/app/oracle/product/19.3.0/dbs> ls -la $ORACLE_HOME/bin/oracle
    -rwsr-x--x 1 oracle asmadmin 448365376 Jun 29 16:03 /u01/app/oracle/product/19.3.0/bin/oracle

    Even if I changed it with chmod 6751 oracle from oracle os user, the permission was NOT changed.
    Check this note out..

    Unable To Change Oracle Binary Permissions (Doc ID 2332879.1)

    It says the file system was not mounted properly

    CAUSE
    The filesystem (GI_HOME and/or DB_HOME) is mounted with nosuid, so users can not set the suid on the oracle binary.

    SOLUTION
    Remove nosuid from the mount option for the filesystems that host GI_HOME and DB_HOME.
    Doing this will allow setting the SUID.

    Well, I did not do this but changed permissions via root

    chmod 6751 oracle

    And it worked!
    Thanks everyone..

Leave a Reply

Your email address will not be published.