ASMDISK 그룹의 각 디스크 사용량을 확인하는 스크립트를 생성하려고 합니다. 각 RAC 클러스터의 한 노드에 스크립트를 설정했습니다. 몇몇 서버에서는 문제 없이 실행되었지만 그 중 두 대에서는 잘못된 값을 반환했습니다.
이 경우 0 값을 반환하고 1 값을 예상합니다.
# export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1
# export ORACLE_SID=db1
# export PATH=$PATH:$ORACLE_HOME/bin
# sqlplus ****/****
SQL*Plus: Release 12.1.0.2.0 Production on Tue Dec 6 18:57:13 2016
SQL> select count(*) from V$asm_disk_stat;
COUNT(*)
----------
0
oracle 사용자 계정에서 똑같은 SQL을 실행하지만 여전히 동일한 oracle db 사용자를 사용하면 올바른 결과를 얻습니다. DB_ENV 소스 파일에는 다른 사용자의 수동 입력과 정확히 동일한 내보내기가 있습니다.
# su - oracle
$ source db_env
$ sqlplus ****/****
SQL*Plus: Release 12.1.0.2.0 Production on Tue Dec 6 19:07:18 2016
SQL> select count(*) from V$asm_disk_stat;
COUNT(*)
----------
1
왜 이런 일이 발생하는지 잘 모르겠습니다. 동일한 방식으로 연결하고 Oracle 데이터베이스에서 올바른 데이터를 가져올 수 있는 다른 스크립트가 있습니다.
roaima에 따르면 나는 출력을 명시적으로 언급했습니다.
루트로 실행하는 경우:
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/dell/srvadmin/bin:/opt/dell/srvadmin/sbin:/etc/opt/emcpower/bin:/root/bin:/u01/app/oracle/product/12.1.0.2/db_1/bin:/u01/app/oracle/product/12.1.0.2/db_1/bin
# echo $ORACLE_HOME
/u01/app/oracle/product/12.1.0.2/db_1
echo $ORACLE_SID
db1
Oracle로 실행하는 경우:
echo $PATH
/u01/app/oracle/product/12.1.0.2/db_1/bin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/dell/srvadmin/bin:/etc/opt/emcpower/bin:/home/oracle/bin
echo $ORACLE_HOME
/u01/app/oracle/product/12.1.0.2/db_1
echo $ORACLE_SID
db1