#!/bin/sh
#
# $Header: opsm/utl/srvctl.sbs /unix/44 2010/04/13 10:58:52 sowong Exp $
#
# srvctl
#
# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 
#
#    NAME
#      srvctl - Oracle Server Control Utility
#
#    DESCRIPTION
#      Oracle Server Control Utility can be used to administer a RAC database,
#      i.e., to modify the configuration information of a RAC 
#      database server as well as to do start/stop/status operations on the
#      instances of the server.
#
#    MODIFIED   (MM/DD/YY)
#       sowong   04/09/10 - XbranchMerge sowong_bug-9536406 from
#                           st_has_11.2.0.1.0
#       sravindh 09/18/09 - XbranchMerge sravindh_mrg2lnx2 from
#                           st_has_11.2.0.1.0
#       yizhang  03/01/10 - fix bug 9433691
#       yizhang  12/24/09 - fix bug 9040155
#       ksviswan 08/17/09 - Fix LD_LIBRARY_PATH for Sol.X64
#       sravindh 05/05/09 - Bug 8481528
#       rxkumar  02/03/09 - fix bug8218759
#       rxkumar  01/22/09 - fix bug7715235
#       rxkumar  07/16/08 - fix EONSJAR
#       sowong   05/20/08 - change ORACLE_HOME to OHOME
#       spavan   05/12/08 - fix bug6937911
#       spavan   04/16/08 - fix bug6957022
#       spavan   03/26/08 - fix srvctl installer variables.
#       rwessman 04/04/08 - Added GNS jar file to support additions for GNS.
#       rxkumar  01/08/08 - fix bug6730574
#       sowong   10/30/07 - remove -x
#       srisanka 10/15/07 - replace Installer vars
#       yizhang  09/25/07 - add property oracle.eonsd.tracefile
#       rxkumar  09/06/07 - update classpath to include eons.jar
#       lweng    05/09/07 - add option to get srvctl11.jar
#       rajkris  03/07/07 - 
#       sowong   02/27/07 - fix bug5387862
#       rxkumar  07/25/06 - fix bug5313735 
#       rxkumar  07/05/06 - add srvctl trace file support: bug5377319
#       rxkumar  07/06/06 - fix bug5330848 
#       rxkumar  05/08/06 - fix bug5211942 
#       sowong   04/11/06 - fix bug 5140038. 
#       mnijasur 02/21/06 - fix 5029615 - merge linux-ppc port changes 
#       bkannike 02/07/06 - Fix for 4937400 
#       sowong   10/05/05 - fix bug 4624796 
#       rxkumar  11/29/04 - fix bug4024708 
#       dliu     11/18/04 - replace OH 
#       khsingh  10/07/04 - add workaround for bug (3937317)
#       khsingh  09/27/04 - update case statement (3914991)
#       gdyoung  09/17/04 - ;;
#       gdyoung  08/20/04 - ple/st script merging 
#       dliu     08/04/04 - get them work on linux 
#       dliu     11/20/03 - support for trace 
#       dliu     11/12/03 - unset ORA_CRSDEBUG 
#       bhamadan 09/18/03 - replacing s_jre131Location with s_jreLocation 
#       khsingh  06/25/03 - remove policy file
#       rxkumar  06/03/03 - add srvmasm.jar
#       rdasari  06/02/03 - set LD_LIBRARY_PATH appropriately for 32 and 64 bit solaris platforms
#       dliu     02/21/03 - add i18n.jar
#       dliu     11/13/02 - use ORA_CRS_UI_FMT to turn on output capture
#       dliu     10/17/02 - turn on output capture
#       jtellez  10/04/02 - make policy ==
#       surchatt 09/06/02 - puttint policy file location
#       rdasari  08/07/02 - use java instead of jre
#       rdasari  08/01/02 - use jdk131
#       jtellez  07/26/02 - add srvmhas.jar to classpath
#       rdasari  05/09/01 - changing the header information
#       rdasari  03/22/01 - changing to ops to srv.
#       dliu     03/02/01 - use "$@" for argument list. this iscritical for correct interpretation of arguments with spaces in them..
#       dliu     02/26/01 - fix bug #1656127: SHLIB_PATH change.
#       dliu     02/23/01 - replace $ORACLE_HOME in classpath with an install variable..
#       jcreight 11/08/00 - define OPSMJAR, not OPSJAR
#       rdasari  10/27/00 - Making corrections
#       jcreight 10/25/00 - opsctl.jar is in $ORACLE_HOME/opsm/jlib.
#       rdasari  09/11/00 - Adding the case for HI-UX
#       rdasari  08/25/00 - Adding the definition of JREJAR variable
#

# External Variable set by the Installer
OHOME=/oracle/EPP/11203

cmdpath=`dirname $0`
case "$cmdpath" in
    /*) ;;
    .) cmdpath=`pwd`;;
    *) cmdpath=`pwd`/$cmdpath;;
esac
  
OHOMEDIR=`dirname $cmdpath`

if [ ! -d $OHOMEDIR/bin ] || [ ! -f $OHOMEDIR/jlib/srvm.jar ]
then
    OHOMEDIR=/oracle/EPP/11203
fi

JREDIR=$OHOMEDIR/jdk
JLIBDIR=$OHOMEDIR/jlib

# jar files

# SRVM-ASM jar file
SRVMASMJAR=$JLIBDIR/srvmasm.jar

### ORATST_SRVCTL11 is a for upgrade tests and WLM folks to add nodeapps in 11.1 style
if [ -z "$ORATST_SRVCTL11" ]
then
#SRVM jar file
   SRVMJAR=$JLIBDIR/srvm.jar

#SRVCTL jar file
   SRVCTLJAR=$OHOMEDIR/srvm/jlib/srvctl.jar

# SRVM-HAS jar file
   SRVMHASJAR=$JLIBDIR/srvmhas.jar
fi

# Grid Naming Service jar file.
GNSJAR=$JLIBDIR/gns.jar

# Supercluster jar files
SCJAR=$JLIBDIR/supercluster.jar
SCCJAR=$JLIBDIR/supercluster-common.jar
EONSJAR=$OHOMEDIR/ons/lib/ons.jar

#NetCa config jar
NETCFGJAR=$JLIBDIR/netcfg.jar

# JRE Executable and Class File Variables
JRE=$JREDIR/bin/java
JREJAR=$JREDIR/jre/lib/rt.jar:$JREDIR/jre/lib/i18n.jar

CLASSPATH=$NETCFGJAR:$JREJAR:$SRVMJAR:$SRVMHASJAR:$SRVMASMJAR:$SCJAR:$SCCJAR:$EONSJAR:$SRVCTLJAR:$GNSJAR

# turn on output capture
_CRS_UI_FMT=-v
export _CRS_UI_FMT

#Used for specifying any platform specific Java options
JRE_OPTIONS=""

# Set the shared library path for JNI shared libraries
# A few platforms use an environment variable other than LD_LIBRARY_PATH
PLATFORM=`uname`
case $PLATFORM in 
HP-UX)
   LD_LIBRARY_PATH=$OHOMEDIR/lib:$OHOMEDIR/srvm/lib
   export LD_LIBRARY_PATH
   SHLIB_PATH=
   JRE_OPTIONS="-d64"
   ;;
AIX)
   LIBPATH=$OHOMEDIR/lib:$OHOMEDIR/srvm/lib:$LIBPATH
   export LIBPATH
   JRE_OPTIONS="-d64"
   ;;
Linux)
   LD_LIBRARY_PATH=$OHOMEDIR/lib:$OHOMEDIR/srvm/lib:$LD_LIBRARY_PATH
   # Linux ( ppc64 || s390x ) => LD_LIBRARY_PATH lib32
   ARCH=`uname -m`;
   if [ "$ARCH" = "ppc64" -o "$ARCH" = "s390x" ]
   then
     LD_LIBRARY_PATH=$OHOMEDIR/lib32:$OHOMEDIR/srvm/lib32:$LD_LIBRARY_PATH
   fi
   export LD_LIBRARY_PATH
   ;;
SunOS) 
    LD_LIBRARY_PATH_64=$OHOMEDIR/lib:$OHOMEDIR/srvm/lib:$LD_LIBRARY_PATH_64
    export LD_LIBRARY_PATH_64
    LD_LIBRARY_PATH=$OHOMEDIR/lib:$OHOMEDIR/srvm/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH
    JRE_OPTIONS="-d64"
    ;;
OSF1) LD_LIBRARY_PATH=$OHOMEDIR/lib:$OHOMEDIR/srvm/lib:$LD_LIBRARY_PATH
      export LD_LIBRARY_PATH
      ;;
Darwin) 
      DYLD_LIBRARY_PATH=$OHOMEDIR/lib:$OHOMEDIR/srvm/lib:$DYLD_LIBRARY_PATH 
      export DYLD_LIBRARY_PATH 
      ;; 
*)    if [ -d $OHOMEDIR/lib32 ];
      then
        LD_LIBRARY_PATH=$OHOMEDIR/lib32:$OHOMEDIR/srvm/lib32:$LD_LIBRARY_PATH
      else
        LD_LIBRARY_PATH=$OHOMEDIR/lib:$OHOMEDIR/srvm/lib:$LD_LIBRARY_PATH
      fi
      export LD_LIBRARY_PATH
      ;;
esac

#Get crshome
CHOME=`$OHOME/srvm/admin/getcrshome`

if [ $? = 1 ]
then
    echo "****Unable to retrieve Oracle Clusterware home."
    echo "Start Oracle Clusterware stack and try again."
    exit 1
fi

if [ "X$CHOME" != "X$OHOME" ]
then  
    case $ORACLE_HOME in
        "") echo "****ORACLE_HOME environment variable is not set."
            echo "    ORACLE_HOME should be set to the main"
            echo "    directory that contains Oracle products."
            echo "    Set and export ORACLE_HOME, then re-run."
            exit 1;;
    esac
else
    ORACLE_HOME=$CHOME
    export ORACLE_HOME
fi

# Properties to pass directly to java
if [ "X$SRVM_PROPERTY_DEFS" = "X" ]
then
  SRVM_PROPERTY_DEFS=""
fi

# Environment variable to turn on tracing
if [ "X$SRVM_TRACE" != "X" ]
then
    SRVM_PROPERTY_DEFS="$SRVM_PROPERTY_DEFS -DTRACING.ENABLED=true -DTRACING.LEVEL=2"
    # Environment variable to turn on tracing to a file.
    if [ "X$SRVCTL_TRACEFILE" != "X" ]
    then
        SRVM_PROPERTY_DEFS="$SRVM_PROPERTY_DEFS -Dsrvm.srvctl.tracefile=$SRVCTL_TRACEFILE -Doracle.eonsd.tracefile=$SRVCTL_TRACEFILE"
    fi
fi

# Add configuration file containing logging properties.
SRVM_PROPERTY_DEFS="$SRVM_PROPERTY_DEFS -Djava.net.preferIPv4Stack=true -Djava.util.logging.config.file=$CHOME/srvm/admin/logging.properties"

# Run srvctl 
$JRE $JRE_OPTIONS -DORACLE_HOME=$ORACLE_HOME -classpath $CLASSPATH $SRVM_PROPERTY_DEFS oracle.ops.opsctl.OPSCTLDriver "$@"
exit $?
