环境:RHEL7.5+ORACLE 19
SHELL 如下:
==================================================================
#! /usr/bin/ksh
#+++++++++++++++++++++++++++++++++++++++++++++
Get ORACLE_SID DB Satus of
Param 1 : ORACLE_SID
#+++++++++++++++++++++++++++++++++++++++++++++
if [ $# -ne 1 ]
then
echo “Syntax : get_db_status <oracle_sid>”
exit 8
fi
sql_script=/tmp/get_db_status.$$.sql
sql_script_out=$sql_script.out
echo “connect / as sysdba” > $sql_script
echo " " >> $sql_script
echo " " >> $sql_script
echo “set head off” >> $sql_script
echo “set pagesize 0” >> $sql_script
echo “set linesize 1000” >> $sql_script
echo “select 'STATUS ’ || open_mode from v$database;” >> $sql_script
echo “exit” >> $sql_script
su - oracle -c "sqlplus -s /NOLOG @sql_script_out 2>/dev/null 0</dev/null
if [ -f ( grep ‘STATUS’ $sql_script_out| awk ‘{printf("%s %s\n",$2,$3)}’ )
case $status in
“READ WRITE”) stat=“OPEN” ;;
“MOUNTED” | “READ ONLY”) stat=“MOUNT” ;;
*) stat=“NOTAVAILABLE” ;;
esac
else
stat=“NOTAVAILABLE”
fi
rm -f $sql_script_out $sql_script
typeset -u $stat
echo “DATASE $1 IS :” ${stat}
测试结果:
./getdbstatu.sh D4C
DATASE D4C IS : NOTAVAILABLE
./getdbstatu.sh D4C
DATASE D4C IS : OPEN
./getdbstatu.sh D4C
DATASE D4C IS : MOUNT




