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
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.
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.
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)
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..