#!/bin/bash

test -z "$HOME" || exec -c $0 $@ # execute always in clear environment
echo "Initial environment"
env
echo "TTY"
tty
echo "/TTY"

# load common functions and configuration
. /usr/lib/orarun/common.sh
. /usr/lib/orarun/functions.sh

#### main ####


## commandline arguments
if ! [ -n "$2" -a \( "$1" = "start" -o "$1" = "stop" \) ]; then
	echo "Usage: $(basename $0) {start|stop} <ORACLE_SID>" >&2 
	exit 1
fi

SID=$2
ACTION=$1

## variables
ORATAB=/etc/oratab
export ORACLE_HOME=$(oratab_get_oracle_home "$ORATAB" "$SID")
if [ $? -ne 0 ]; then
	echo "No entry for database '$SID' found in '$ORATAB'!" >&2
	exit 2
fi
ora_environment # set ORACLE environment

START_MODE=$(oratab_get_startmode "$ORATAB" "$SID")
ORACLE_EDIION=$(get_oracle_edition "$ORACLE_HOME")
ORACLE_MAJOR=$(get_oracle_major_version "$ORACLE_HOME")

# Do not distiguish beetween W and Y. The difference is done my 
# chosing the right systemd unit template 
# Y => oracle-db@SID, 
# W => oracle-asm-db@SID
if [ "$START_MODE" != "Y" -a "$START_MODE" != "W" ]; then
	echo "Database '$SID' is disabled in $ORATAB!" >&2
	exit 3
fi


rc=0

export ORACLE_SID=$SID
echo "Environment before action"
env
echo "ulimit"
ulimit -a

case $ACTION in   
 	start)
		echo "Starting Database $ORACLE_SID..."
		run_sqlplus "$ORACLE_HOME" /nolog <<-EOF
		connect / as sysdba
		startup
		quit
		EOF
		rc=$?

		echo -n "Oracle database '$ORACLE_SID' "
		if [ $rc -eq 0 ] ; then
			echo "warm started." 
		else
			echo "NOT started."
		fi
		#@todo support several versions
		rc=$?
	;;
	stop)
		echo "Shutting down Oracle database $ORACLE_SID..."
		run_sqlplus "$ORACLE_HOME" /nolog <<-EOF
		connect / as sysdba
		shutdown immediate
		quit
		EOF
		rc=$?
	;;
esac

exit $rc
