#!/bin/sh
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_2
export GRID_HOME=/u01/app/12.1.0.2/grid
export ORACLE_SID=orcl

check_dbstatus() {
OUTPUT=`$ORACLE_HOME/bin/sqlplus -s / as sysdba << EOF
set echo off define off heading off pagesize 0
SET LINESIZE 100
COLUMN l_output FORMAT A100
SELECT i.status || ' ' || pa.value || '/' || 'ora_' || p.spid || '.aud' AS l_output
FROM v\\$session s,
     v\\$process p,
     v\\$parameter pa,
     v\\$instance i
WHERE pa.name = 'audit_file_dest'
AND s.paddr = p.addr
AND s.sid = (select sid from v\\$mystat where rownum=1) and s.audsid = sys_context('userenv','sessionid');
exit
EOF`
  DBSTATUS=$(echo $OUTPUT | awk '{print $1}')
  AUDITFILE=$(echo $OUTPUT | awk '{print $2}')
  rm -f $AUDITFILE 2>/dev/null
  if [ "$DBSTATUS" == "OPEN" ]
  then
    return 0
  else
    return 1
  fi
}
case $1 in
'start')
NODE_NAME=$(${GRID_HOME}/bin/olsnodes -l)
VIP_IP=$(${GRID_HOME}/bin/srvctl config vip -n $NODE_NAME | grep "VIP IPv4 Address" | awk '{print $4}')
$ORACLE_HOME/bin/sqlplus -s / as sysdba << EOF
startup
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=${VIP_IP})(PORT=1521))))' scope=memory;
EOF
check_dbstatus
RET=$?
;;
'stop')
$ORACLE_HOME/bin/sqlplus -s / as sysdba << EOF
shutdown immediate
EOF
NUM=`ps -ef | grep -i smon_${ORACLE_SID} | grep -v grep | wc -l`
if [ $NUM = 0 ]; then
  RET=1
else
  RET=0
fi
;;
'clean')
$ORACLE_HOME/bin/sqlplus -s / as sysdba << EOF
shutdown abort
EOF
##for i in `ps -ef | grep -i mon_${ORACLE_SID} | awk '{print $2}' ` ;do kill -9 $i; done
NUM=`ps -ef | grep -i smon_${ORACLE_SID} | grep -v grep | wc -l`
if [ $NUM = 0 ]; then
  RET=1
else
  RET=0
fi
;;
'check')
check_dbstatus
;;
esac