#!/usr/bin/bash
# Script: doconservice.sh
# Author: Theodore Zacharia
# Version: 1.0 15/11/2013 - Finally extracted this out of doflashback.sh
#
# Utility script manage connector services for a clustered Oracle DB
# The main modes of operation are:
# * list     - which lists the services
# * status   - status of the service
# * start    - start the service
# * stop     - stop the service
#
# Addtionally
#
# * or | mis - specify which services to stop or start
#

# ***** Mainline

while getopts s: AOPT
do
case $AOPT in
        s) export ORAENV_ASK=NO;export ORACLE_SID=$OPTARG;. oraenv ;;
esac
done

shift $((OPTIND-1))

echo "***** IMPORTANT *****"
echo "Ensure you have run . oraenv and set your DB correctly"
echo " "
if [[ $ORACLE_SID == "" || $ORACLE_SID == "oracle" ]]
then
        echo "**** WARNING, it looks like you have not set the SID"
        echo "     continuing, but it probably will not work :( "
fi


if (( $# < 1 ))
then
	echo "usage: $0 [-s SID] list|[status|start|stop <or|mis>]"
	echo "-s SID   - allows you to set the ORACLE SID"
	echo "The full set of options are:"
	echo "list     - list the con services on the machine"
	echo "status   - status of the specified service"
	echo "start    - start the specified service"
	echo "stop     - stop the specified service"
	exit
fi

MNAME="$2"

# get host details
HOSTNAME=`uname -n`
HOSITID=`uname -n | awk '{print substr($0, length, 1)}'`
ORACLE_CLUSTER=${ORACLE_SID%1}

# workout name of connector service based on where we are and user request
# the pattern part of this test must NOT be quoted
if [[ $HOSTNAME = sse* ]]
then
	THISENV="s"
else
	THISENV="l"
fi

# NOTE: This workds out a service name based on LSE/SSE, when this DB service changes need to change it below
if [[ "$2" == "mis" ]]
then
	CONSERVICENAME="${MNAME}con"
else
	CONSERVICENAME="${THISENV}2${MNAME}con"
fi

if [[ $1 == "list" ]]
then
	echo "following connector services found for cluster $ORACLE_CLUSTER:"
	srvctl status service -d $ORACLE_CLUSTER 
elif [[ $1 == "status" ]]
then
	echo "status of $CONSERVICENAME for cluster $ORACLE_CLUSTER:"
	srvctl status service -d $ORACLE_CLUSTER -s $CONSERVICENAME
elif [[ $1 == "start" ]]
then
	echo "starting the $CONSERVICENAME service on cluster $ORACLE_CLUSTER"
	srvctl start service -d $ORACLE_CLUSTER -s $CONSERVICENAME
elif [[ $1 == "stop" ]]
then
	echo "stopping the $CONSERVICENAME service on cluster $ORACLE_CLUSTER"
	srvctl stop service -d $ORACLE_CLUSTER -s $CONSERVICENAME
else
	echo "unknown command"
fi


