#!/bin/sh # # $Header: opsm/cvutl/cluvfy.sbs.pre /unix/109 2016/07/20 08:15:10 xesquive Exp $ # # cluvfy.sbs.pre # # Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. # # NAME # cluvfy.sbs.pre - Instantiate cluvfy with correct build version and Starts the cluster verification driver. ( with compatible clusterware home ) # # DESCRIPTION # This requires these environmental variables. # CV_HOME: home for CV tools # CV_JDKHOME: java home # CV_DESTLOC: the remote locations where the required files can be # copied and executed. The user MUST have write permission # on this location, on all the nodes. # # NOTES # # PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin export PATH JDK_VERSION=18 AWK=awk CUT=cut SED=sed ECHO=echo CV_ID=id GREP=grep OSNAME=`/bin/uname` checkRootAllowedCommands () { #allow only 'cluvfy comp dhcp' and 'cluvfy comp dns' to run as root. # check if first arg is comp if [ "X$1" != "Xcomp" ]; then return 1; fi # we have comp now check for dns or dhcp if [ "X$2" = "Xdns" ] || [ "X$2" = "Xdhcp" ]; then return 0; fi #all others should fail return 1; } if [ -z "$CVU_TEST_ENV" ] then # checks if ORA_CRS_HOME has not been set if [ -n "$ORA_CRS_HOME" ] then ORA_CRS_HOME= export ORA_CRS_HOME fi fi if [ "X$TMPDIR" = "X" ] then TMPDIR=/tmp fi RUID=`$CV_ID -u 1> /dev/null 2>&1` status=$? if [ "$status" != "0" ]; then RUID=`$CV_ID | $AWK -F\( '{print $1}' | $AWK -F= '{ print $2}'` else RUID=`$CV_ID -u` fi if [ "${RUID}" = "0" ]; then checkRootAllowedCommands $* ret=$? if [ "$ret" != "0" ]; then $ECHO "You must NOT be logged in as root (uid=0) when running $0." exit 1 else ROOT_USER_CHECK="-DCV_ROOTUSERCHECK=true" fi else ROOT_USER_CHECK= fi validateInput() { ##validates if any value is assigned to the script variables PARAM_NAME=$1 if [ "$PARAM_NAME" = "" ]; then return 1; else valid=`$ECHO $PARAM_NAME | $AWK '/^%/ { print "false"; }'` if [ "$valid" = "false" -o ! -d $PARAM_NAME ]; then return 1; fi return 0; fi } validateJREVersion() { if [ ${JDK_VERSION} -gt $1 ] then ${ECHO} "JDK version is incompatible.Please use a jdk version the same as, or later than ${JDK_VERSION}" exit 1 fi } CRSHOME=%ORACLE_HOME% CV_JREDIR=$CRSHOME/jdk SRVMASMJAR= SRVMHASJAR= TRACE= TRACELOC= if [ -n "$SRVM_TRACE" ] then if [ "$SRVM_TRACE" = "false" ] || [ "$SRVM_TRACE" = "FALSE" ] then TRACE="-DTRACING.ENABLED=false" else if [ -n "$SRVM_TRACE_LEVEL" ] then TRACE="-DTRACING.ENABLED=true -DTRACING.LEVEL=${SRVM_TRACE_LEVEL}" else TRACE="-DTRACING.ENABLED=true -DTRACING.LEVEL=2" fi fi fi # pass the options explicitly to avoid # _JAVA_OPTIONS message from java on cluvfy output JAVA_OPTS= if [ -n "$_JAVA_OPTIONS" ]; then JAVA_OPTS=$_JAVA_OPTIONS unset _JAVA_OPTIONS fi if [ -n "$CV_TRACELOC" ]; then TRACELOC="-DCV_TRACELOC=$CV_TRACELOC" fi validateInput $CRSHOME ret=$? if [ "$ret" = "0" ]; then CV_HOME=$CRSHOME SRVMHASJAR=$CV_HOME/jlib/srvmhas.jar fi if [ -z "$CV_HOME" ]; then cmdpath=`dirname $0` case "$cmdpath" in /*) ;; .) cmdpath=`pwd`;; *) cmdpath=`pwd`/$cmdpath;; esac if [ -d $cmdpath/../bin ] && [ -f $cmdpath/../jlib/cvu.jar ] then CV_HOME=$cmdpath/.. #Check for the case when cluvfy runs from GI_HOME/crs/sbs elif [ -d $cmdpath/../../bin ] && [ -f $cmdpath/../../jlib/cvu.jar ] then CV_HOME=$cmdpath/../.. else $ECHO "Set CV_HOME environmental variable before proceeding." exit 1 fi fi CVUJAR=$CV_HOME/jlib/cvu.jar SRVMJAR=$CV_HOME/jlib/srvm.jar OUIJARS=$CV_HOME/oui/jlib/OraInstaller.jar:$CV_HOME/oui/jlib/jsch.jar:$CV_HOME/oui/jlib/OraPrereq.jar:$CV_HOME/oui/jlib/prov_fixup.jar:$CV_HOME/oui/jlib/xmlparserv2.jar:$CV_HOME/oui/jlib/share.jar:$CV_HOME/oui/jlib/orai18n-mapping.jar NETCFGJAR=$CV_HOME/jlib/netcfg.jar LDAPJAR=$CV_HOME/jlib/ldapjclnt12.jar validateInput $CV_JREDIR ret=$? if [ "$ret" != "0" ]; then if [ -z "$CV_JDKHOME" ]; then if [ -d $CV_HOME/jdk/jre ]; then CV_JDKHOME=$CV_HOME/jdk/jre else $ECHO "Set CV_JDKHOME to a valid JRE $JDK_VERSION location" exit 1 fi fi CV_JREDIR=$CV_JDKHOME fi JRE=$CV_JREDIR/bin/java JREJAR=$CV_JREDIR/lib/rt.jar # Fetch the JDK version at runtime RJDKVER=`${JRE} -Xmx32m -version 2>&1 | ${AWK} '{ if (NR==1) { print $3 }}' | ${SED} -e 's/\"//g' | ${AWK} -F. '{print $1$2}'` # Validate the JDK version at runtime against the JDK version at build time validateJREVersion $RJDKVER # Determine the JDBC jar to load based on JDK version if [ $RJDKVER -eq 14 ] then JDBCVER=$RJDKVER; else JDBCVER=`echo ${RJDKVER} | ${AWK} '{print substr($0,2,1)}'` fi JDBCJAR=$CV_HOME/jdbc/lib/ojdbc${JDBCVER}.jar LD_LIBRARY_PATH=$CV_HOME/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH # Set the shared library path for JNI shared libraries # A few platforms use an environment variable other than LD_LIBRARY_PATH PLATFORM=`/bin/uname` case $PLATFORM in HP-UX) arch=`/bin/uname -m` # bugfix 5404049 if [ -z "$JAVA_HOME" ]; then JAVA_HOME=$CV_JREDIR/.. export JAVA_HOME fi JRE_OPTS=-d64 #Bug 10111014: Add -XX:+UseC2 to JRE_OPTS on HP-IA if [ "$arch" = "ia64" ] then SHLIB_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/hpia64/ VERSION=`$JRE -fullversion 2>&1 | $CUT -d'"' -f2 | $AWK -F\- '{print $1}'`; DYN=" -XX:+UseC2" VER1=`echo $VERSION|$CUT -d'.' -f1` VER2=`echo $VERSION|$CUT -d'.' -f2` VER3=`echo $VERSION|$CUT -d'.' -f3` VER4=`echo $VERSION|$CUT -d'.' -f4` if [ $VER1 -eq 1 -a $VER2 -eq 5 -a $VER3 -eq 0 -a $VER4 -gt 5 -a $VER4 -le 20 ] then JRE_OPTS="$JRE_OPTS $DYN" fi else SHLIB_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/hpunix/ fi export SHLIB_PATH ;; AIX) LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/aix/ LIBPATH=$LD_LIBRARY_PATH export LIBPATH JRE_OPTS=-d64 ;; Linux) arch=`/bin/uname -m` if [ "$arch" = "ppc64" -o "$arch" = "x86_64" -o "$arch" = "s390x" ] then JRE_OPTS="-d64" fi if [ "$arch" = "x86_64" ] then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/linux64/ elif [ "$arch" = "ppc64" ] then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/linuxppc64/ elif [ "$arch" = "s390x" ] then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/linuxS390/ else LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/linux/ fi ;; SunOS) arch=`/bin/uname -p` if [ "$arch" = "sparc" ] then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/solaris/ else LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CV_HOME/oui/lib/intelsolaris/ fi # Bug 4620768. Unset LD_LIBRARY_PATH_64 unset LD_LIBRARY_PATH_64 JRE_OPTS=-d64 ;; esac export LD_LIBRARY_PATH #Make ORACLE_HOME to be CV_HOME. Ignore ORACLE_HOME set in environment. ORACLE_HOME=$CV_HOME export ORACLE_HOME #If CV_PREREQ_XML is not set in the environment make CV_PREREQ_XML point to the prereq xml #if [ -z "$CV_PREREQ_XML" ]; #then # CV_PREREQ_XML=$CV_HOME/cv/cvdata/cvu_prereq.xml # export CV_PREREQ_XML #fi #Make sure we are not in an SIDB environment, if we are exit out with an #error message. if [ -f $CV_HOME/srvm/admin/getcrshome ] then $CV_HOME/srvm/admin/getcrshome > /dev/null 2>&1 SIDB_STATUS=$? # If we did NOT encounter an error (i.e. status equal to 0) while getting # the CRSHOME then we are in an SIDB environment... if [ $SIDB_STATUS -ne 0 ] then #Allow cluvfy to run from software only GI home #Report error if software only GI not installed correctly if [ ! -f "$CV_HOME/bin/crsd.bin" ] || [ ! -f "$CV_HOME/bin/evmd.bin" ] then if [ `expr "$*" : ".*-_patch_only.*"` -eq 0 ] then # give an error only if this is not running from root script $ECHO " " $ECHO "ERROR: " $ECHO "Oracle Grid Infrastructure not installed or configured correctly. " $ECHO "You cannot run '$0' without the Oracle Grid Infrastructure." $ECHO " " exit 1 fi fi fi fi REM_CVHOME="-DCV_HOME=$CV_HOME" if [ `expr "$*" : ".*-_patch_only.*"` -ne 0 ] then CLASSPATH=$JREJAR:$CVUJAR:$SRVMJAR:$OUIJARS:$JDBCJAR:$NETCFGJAR:$LDAPJAR else CLASSPATH=$JREJAR:$CVUJAR:$SRVMJAR:$OUIJARS:$SRVMHASJAR:$JDBCJAR:$NETCFGJAR:$LDAPJAR fi #If remote destination location is empty show error msg. Proceed with default. if [ -n "$CV_DESTLOC" ] then REM_DESTLOC="-DCV_DESTLOC=$CV_DESTLOC" else REM_DESTLOC="-DCV_DESTLOC=$TMPDIR" fi REM_ENV="$REM_DESTLOC $REM_CVHOME" # set installer property to true if it runs from runcluvfy for arg in $@ ; do lastArg="$arg" done if [ "$lastArg" = "_FROM_RUNCLUVFY" ] then INSTALLER_PROPERTY="-Doracle.installer.setupWizard=true" SRVMHASJAR=$CV_HOME/jlib/srvmhas.jar GNSJAR=$CV_HOME/jlib/gns.jar CLASSPATH=$CLASSPATH:$SRVMHASJAR:$GNSJAR fi ENV_FILE="${ORA_CRS_HOME}/crs/install/s_crsconfig_${HOST}_env.txt" CMD="$JRE $JRE_OPTS -classpath $CLASSPATH $ROOT_USER_CHECK $REM_ENV $CVU_RESOURCE $TRACE $TRACELOC $JAVA_OPTS $INSTALLER_PROPERTY -Xmx2048m oracle.ops.verification.client.CluvfyDriver" if [ -n "$CVU_RESOURCE" ] then if [ -f "$ENV_FILE" ] then export TZ=`$GREP ^TZ= $ENV_FILE | $AWK -F'=' '{print $2}'` fi $CMD "$@"& PID_FILE=`echo $CVU_RESOURCE |cut -d"=" -f4` echo $! > $PID_FILE wait exit 0 fi # Run cluvfy driver $CMD "$@" exit $?