asmcmd does not return error text for root user
January 14, 2021 Leave a comment
Problem:
While running asmcmd
commands via root
user, error messages are not displayed. But if we run the same command via grid
– it returns messages. In the following example, ORACLE_HOME is set to RDBMS home (instead of GI) and we are trying to list the file which does not exist:
[root@rac1 ~]# echo $ORACLE_HOME /u01/app/oracle/product/19.3.0/dbhome_1 [root@rac1 ~]# echo $PATH /u01/app/19.3.0/grid/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@rac1 ~]# asmcmd ls +demodg/orcl/tempfile/TEMP.263.10617958 <<<<<<Nothing is displayed here
When a file does not exist, ls
command should display ASMCMD-8002: entry 'TEMP.263.10617958' does not exist in directory '+demodg/orcl/tempfile/'
error. But in our example, it does not return anything.
In the following example, if we try to copy a file, we see a message about copying a file but actually, the file is not copied because grid user does not have permission under /u01:
[root@rac1 ~]# asmcmd cp +demodg/orcl/tempfile/TEMP.263.1061795851 /u01
copying +demodg/orcl/tempfile/TEMP.263.1061795851 -> /u01/TEMP.263.1061795851
If we run the same command via grid, we get understandable error message:
[grid@rac1 ~]$ asmcmd cp +demodg/orcl/tempfile/TEMP.263.1061795851 /u01 ASMCMD-9463: operation failed due to lack of write permissions
Reason:
Environment variables are not set correctly. ORACLE_HOME should be pointing to GI home.
Solution:
[root@rac1 ~]# export ORACLE_HOME=/u01/app/19.3.0/grid [root@rac1 ~]# asmcmd ls +demodg/orcl/tempfile/TEMP.263.10617958 ASMCMD-8002: entry 'TEMP.263.10617958' does not exist in directory '+demodg/orcl/tempfile/'