#!/bin/sh # localconfig.sbs for local CSS # # This script file should be run for following three cases: # 1) add: When you are configuring the CSS for the first time # 2) delete: When there is only one single instance Oracle home on a node and # you are deleting/deinstalling that Oracle home # 3) reset: When there are more than two single instance Oracle homes on a # node and you are deleting/deconfiguring the Oracle home that # currently runs CSS daemon but you want CSS to run from a # different Oracle home # NOTE: When using 'reset' option. This script can be run from # source Oracle home or destination (Where CSS is to be reset to) Oracle # home. SILENT=%SILENT% CSS_ORACLE_HOME=%ORACLE_HOME% CSS_ORACLE_OWNER=%ORACLE_OWNER% CSS_DBA_GROUP=%ORA_DBA_GROUP% CSS_LANGUAGE_ID=%LANGUAGE_ID% CSS_PARAMS="CSS_ORACLE_HOME CSS_ORACLE_OWNER CSS_DBA_GROUP CSS_LANGUAGE_ID" if [ -z "$CP" ]; then CP=/bin/cp; fi if [ -z "$ECHO" ]; then ECHO=/bin/echo; fi if [ -z "$CHOWN" ]; then CHOWN=/bin/chown; fi if [ -z "$CHGRP" ]; then CHGRP=/bin/chgrp; fi if [ -z "$CHMOD" ]; then CHMOD=/bin/chmod; fi if [ -z "$MKDIR" ]; then MKDIR=/bin/mkdir; fi if [ -z "$MKDIRP" ]; then MKDIRP="/bin/mkdir -p"; fi if [ -z "$RMF" ]; then RMF="/bin/rm -f"; fi if [ -z "$RMRF" ]; then RMRF="/bin/rm -rf"; fi if [ -z "$RM" ]; then RM=/bin/rm; fi if [ -z "$CAT" ]; then CAT=/bin/cat; fi if [ -z "$GREP" ]; then GREP=/bin/grep; fi if [ -z "$AWK" ]; then AWK=/bin/awk; fi if [ -z "$LN" ]; then LN=/bin/ln; fi if [ -z "$LNS" ]; then LNS="/bin/ln -s"; fi if [ -z "$SLEEP" ]; then SLEEP="/bin/sleep"; fi if [ -z "$PSE" ]; then PSE="/bin/ps -e"; fi if [ -z "$CSSDKILL" ]; then CSSDKILL=/bin/kill; fi if [ -z "$ID" ]; then ID=/usr/bin/id; fi if [ -z "$TOUCH" ]; then TOUCH=/bin/touch; fi if [ -z "$HOSTN" ]; then HOSTN=/bin/hostname; fi if [ -z "$EXPRN" ]; then EXPRN=/usr/bin/expr; fi if [ -z "$LS1" ]; then LS1="/bin/ls -1"; fi if [ -z "$WCL" ]; then WCL="/usr/bin/wc -l"; fi if [ -z "$TR" ]; then TR=/bin/tr; fi #solaris on amd has issue with /bin/tr [ 'SunOS' = `/bin/uname` ] && [ 'i86pc' = `/bin/uname -i` ] && TR=/usr/xpg4/bin/tr #on linux tr is at /usr/bin/tr [ 'Linux' = `/bin/uname` ] && TR=/usr/bin/tr ###Function for displaying usage of this script usage() { printf "Usage:" printf "$0 [add] [delete] [ reset ]" printf " [-silent]" printf " [-paramfile ]" } ##Function for parsing the command line arguments parseArgs() { USER_ARGS=$* ###Defaults CFG_OPTION="reset" DEST_ORACLE_HOME="" if [ $# -eq 0 ]; then usage; exit 2; fi while [ $# -gt 0 ]; do if [ $1 = "-silent" ]; then SILENT=1; shift; elif [ $1 = "add" ]; then CFG_OPTION="add"; shift; elif [ $1 = "delete" ]; then CFG_OPTION="delete"; shift; elif [ $1 = "reset" ]; then CFG_OPTION="reset" if [ $# -ge 2 ]; then if [ $2 != "-paramfile" ]; then CSS_ORACLE_HOME=$2; shift; fi fi shift; elif [ $1 = "-paramfile" ]; then USE_FILE=true if [ $# -ge 2 ]; then CSS_ENV_FILE=$2 shift; else usage; exit 2 fi shift; else usage; exit 2 fi done } ##Function for reading CRS parameters from the given param file readparamfile() { $ECHO "Reading $CSS_ENV_FILE.." ## Make sure that this input file has only "LHS=RHS" and empty lines ## Any other lines will be considered improper input for root script awkOutput=`$AWK 'BEGIN { Ni=0 } \ /^#/ { next } \ /[A-Z]\=\`*\`/ { printf("\"%s\"\n", $0); next } \ /[A-Z_]\=/ { next } \ /^$/ { next } \ { printf("\"%s\"\n", $0); next }' $CSS_ENV_FILE` if [ "x$awkOutput" != "x" ]; then $ECHO "The following unexpected input found in CSS parameter file: $awkOutput" exit 1 fi . $CSS_ENV_FILE $ECHO "File ($CSS_ENV_FILE) is used for setting variables." $ECHO "CSS_ORACLE_HOME=$CSS_ORACLE_HOME" $ECHO "CSS_ORACLE_OWNER=$CSS_ORACLE_OWNER" $ECHO "CSS_DBA_GROUP=$CSS_DBA_GROUP" $ECHO "CSS_LANGUAGE_ID=$CSS_LANGUAGE_ID" } validateInput() { ##validates if any value is assigned to the script variables for i in `$ECHO $CSS_PARAMS`; do PARAM_NAME=$i PARAM_VALUE=`eval $ECHO \\$$i` valid=`$ECHO $PARAM_VALUE | $AWK '/^%/ { print "false"; }'` if [ "$valid" = "false" ]; then $ECHO "No value set for the parameter $PARAM_NAME. Use parameter file to set values"; usage; return 1; fi done return 0; } validateRAC() { RAC=false; if [ -f "$OCRCONFIG" ]; then # ocr.loc file exists and ocr location set here is OCRCONFIG_LOC=`$AWK -F= '/ocrconfig_loc/ {print $2}' < $OCRCONFIG` # ocr.loc already has a location specified. Check if it is used for # single instance CSS/ASM LOCAL_FLAG=`$AWK -F= '/local_only/ {print $2}' < $OCRCONFIG` LOCAL_ONLY=`$ECHO $LOCAL_FLAG | $AWK '/[fF][aA][lL][sS][eE]/ { print "FALSE" } /[tT][rR][uU][eE]/ { print "TRUE" }'` # Previous installation of 10g single instance if [ "$LOCAL_ONLY" = "FALSE" ];then RAC=true; fi fi ret=0; if $RAC; then # OCR and CSS running is configured for CRS services $ECHO "Oracle Cluster Registry (OCR) and CSS are configured for Oracle Cluster Ready (CRS) services. There is no need for local CSS configuration." ret=1; fi return $ret; } NSSetup() { $ECHO "Setting up Network socket directories" for dir in /var/tmp/.oracle /tmp/oracle do if [ ! -d $dir ]; then $MKDIRP $dir || { return 1; }; fi $CHMOD 01777 $dir || { return 1; } $CHOWN root $dir || { return 1; } done return 0; } NSReset() { $ECHO "Cleaning up Network socket directories" for dir in /var/tmp/.oracle /tmp/.oracle do if [ -d $dir ]; then $RMF $dir/*CSS* $RMF $dir/*CRS* $RMF $dir/*EVM* $RMF $dir/*PROC* $RMF $dir/*css* $RMF $dir/*crs* $RMF $dir/*evm* $RMF $dir/*proc* NoFiles=`$LS1 $dir | $WCL | $AWK '{print $1}'` if [ "$NoFiles" = "0" ]; then $RMRF $dir fi fi done return 0; } # This script is intended to be run by root. RUID=`$ID|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'` if [ ${RUID} != "root" ];then $ECHO "You must be logged in as root to run $0." $ECHO "Log in as root and restart $0 execution." exit 1 fi USE_FILE=false # print obsolete msg printf "*********************************************************\n" printf "* NOTES: This script is obsolete. Please use roothas.pl *\n" printf "* to configure Oracle Restart *\n" printf "*********************************************************\n" exit 1 ##Parsing command line arguments (if any) parseArgs $* if $USE_FILE; then if [ ! -f $CSS_ENV_FILE ]; then $ECHO "The input file($CSS_ENV_FILE) specifying the parameter values for variables is not found" exit 1 fi ###Read CRS parameter values from param file readparamfile fi ###validating input params validateInput || { $ECHO $?; exit 1; } ORACLE_HOME=$CSS_ORACLE_HOME export ORACLE_HOME #if DEST_ORACLE_HOME was not set when using reset option then it means #user is running thie script from target Oracle home if [ -z "$DEST_ORACLE_HOME" ]; then DEST_ORACLE_HOME=$CSS_ORACLE_HOME fi ORA_CRS_HOME=$CSS_ORACLE_HOME CH=$DEST_ORACLE_HOME ADDITAB="$CAT \$IT | $GREP -v 'init\.cssd' > \$IT.no_cssd; \ $CP \$IT.no_cssd \$IT; \ $RM \$IT.no_cssd 2>/dev/null; \ $CAT \$IT \$CH/css/admin/inittab_local > \$IT.cssd; \ $ECHO \"Adding to inittab \" ; \ $CP \$IT.cssd \$IT" RMITAB="$CAT \$IT | $GREP -v 'init\.cssd' > \$IT.no_cssd; \ $CP \$IT.no_cssd \$IT" UNAME=/bin/uname PLATFORM=`$UNAME` case $PLATFORM in Linux) LD_LIBRARY_PATH=$ORA_CRS_HOME/lib DIRNAME=/usr/bin/dirname ID=/etc/init.d # RCSDIR. Directories where we want to invoke "start" (which is # misleadingly named) to do boot time checking. # RCKDIR. Directories where we want to invoke "stop" to stop CRS/CSS. # RCALLDIR. Directories where we want to clean CRS/CSS script entries. RCSDIR="/etc/rc.d/rc3.d /etc/rc.d/rc5.d" RCKDIR="/etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d/rc2.d /etc/rc.d/rc4.d /etc/rc.d/rc6.d" RCALLDIR="/etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d/rc2.d /etc/rc.d/rc3.d /etc/rc.d/rc4.d /etc/rc.d/rc5.d /etc/rc.d/rc6.d" RC_START=S96 RC_KILL=K19 RC_KILL_OLD=K96 IT=/etc/inittab INIT=/sbin/init export LD_LIBRARY_PATH ORACLUSTERDIR=$ORA_CRS_HOME/lib OCRCONFIGDIR=/etc/oracle SCRBASE=/etc/oracle/scls_scr ;; HP-UX) MACH_HARDWARE=`/bin/uname -m` if [ "$MACH_HARDWARE" = "ia64" ]; then NMAPIDIR_64=/opt/nmapi/nmapi2/lib/hpux64 NMAPIDIR_32=/opt/nmapi/nmapi2/lib/hpux32 else NMAPIDIR_64=/opt/nmapi/nmapi2/lib/pa20_64 NMAPIDIR_32=/opt/nmapi/nmapi2/lib fi LD_LIBRARY_PATH=$ORA_CRS_HOME/lib:$NMAPIDIR_64:/usr/lib:$LD_LIBRARY_PATH SHLIB_PATH=$ORA_CRS_HOME/lib32:$NMAPIDIR_32:$SHLIB_PATH DIRNAME=/bin/dirname ID=/sbin/init.d RCSDIR="/sbin/rc3.d" RCKDIR="/sbin/rc2.d" RCALLDIR="/sbin/rc2.d /sbin/rc3.d" RC_START=S960 RC_KILL=K190 RC_KILL_OLD=K001 IT=/etc/inittab INIT=/sbin/init export LD_LIBRARY_PATH export SHLIB_PATH ORACLUSTERDIR=$ORA_CRS_HOME/lib32 OCRCONFIGDIR=/var/opt/oracle SCRBASE=/var/opt/oracle/scls_scr ;; SunOS) case `/bin/uname -i` in i86pc) LD_LIBRARY_PATH=$ORA_CRS_HOME/lib:/opt/ORCLcluster/lib:/usr/lib:/usr/ucblib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH ;; *) LD_LIBRARY_PATH=$ORA_CRS_HOME/lib32:/opt/ORCLcluster/lib:/usr/lib:/usr/ucblib:$LD_LIBRARY_PATH LD_LIBRARY_PATH_64=$ORA_CRS_HOME/lib:/opt/ORCLcluster/lib:/usr/lib:/usr/ucblib:$LD_LIBRARY_PATH_64 export LD_LIBRARY_PATH export LD_LIBRARY_PATH_64 ;; esac DIRNAME=/bin/dirname ID=/etc/init.d RCSDIR="/etc/rc3.d" RCKDIR="/etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rcS.d" RCALLDIR="/etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rcS.d" RC_START=S96 RC_KILL=K19 RC_KILL_OLD=K96 IT=/etc/inittab INIT=/sbin/init ORACLUSTERDIR=/opt/ORCLcluster/lib OCRCONFIGDIR=/var/opt/oracle SCRBASE=/var/opt/oracle/scls_scr ;; AIX) LIBPATH=$ORA_CRS_HOME/lib:/opt/ORCLcluster/lib:$ORA_CRS_HOME/lib32:/opt/ORCLcluster/lib32:/usr/lib:$LIBPATH LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH DIRNAME=/bin/dirname ID=/etc RCSDIR="/etc/rc.d/rc2.d" RCKDIR="/etc/rc.d/rc2.d" RCALLDIR="/etc/rc.d/rc2.d" RC_START=S96 RC_KILL=K19 RC_KILL_OLD=K96 IT=/etc/inittab INIT=/usr/sbin/init ADDITAB="$ECHO \"Adding to inittab\"; \ while read line; \ do \ rflds=\`echo \$line | cut -d ':' -f 1-3\`; \ lfld=\`echo \$line | cut -d ':' -f 4-\`; \ mkitab \$rflds:\"\$lfld\"; \ done < \$CH/css/admin/inittab_local" RMITAB="while read line; \ do \ identifier=\`echo \$line | cut -d ':' -f 1\`; \ rmitab \$identifier 2>/dev/null; \ done < \$CH/css/admin/inittab_local" export LIBPATH export LD_LIBRARY_PATH ORACLUSTERDIR=$ORA_CRS_HOME/lib32 OCRCONFIGDIR=/etc/oracle SCRBASE=/etc/oracle/scls_scr ;; OSF1) LD_LIBRARY_PATH=$ORA_CRS_HOME/lib:/shlib:/usr/lib DIRNAME=/usr/bin/dirname ID=/sbin/init.d RCSDIR="/sbin/rc3.d" RCKDIR="/sbin/rc3.d" RCALLDIR="/sbin/rc3.d" RC_START=S96 RC_KILL=K19 RC_KILL_OLD=K96 IT=/etc/inittab INIT=/sbin/init export LD_LIBRARY_PATH ORACLUSTERDIR=/usr/ccs/lib OCRCONFIGDIR=/var/opt/oracle SCRBASE=/var/opt/oracle/scls_scr ;; *) /bin/echo "ERROR: Unknown Operating System" exit -1 ;; esac #convert host name to lower case #If the hostname is an IP address, let hostname #remain as IP address HOST=`$HOSTN` len1=`$EXPRN "$HOST" : '.*'` len2=`$EXPRN match $HOST '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'` # Strip off domain name in case /bin/hostname returns # FQDN hostname if [ $len1 != $len2 ]; then HOST=`$ECHO $HOST | cut -d'.' -f1 ` fi HOST=`$ECHO $HOST | $TR '[:upper:]' '[:lower:]'` SCRDIR=$SCRBASE/$HOST $CHMOD 644 $IT $IT.orig $IT.no_cssd $IT.cssd $IT.crs $IT.no_crs 2>/dev/null ##Validating if CSS is configured for RAC validateRAC || { $ECHO $?; exit 1; } ORA_CRS_HOME=$DEST_ORACLE_HOME export ORA_CRS_HOME case $PLATFORM in Linux) LD_LIBRARY_PATH=$ORA_CRS_HOME/lib export LD_LIBRARY_PATH ;; HP-UX) MACH_HARDWARE=`/bin/uname -m` if [ "$MACH_HARDWARE" = "ia64" ]; then NMAPIDIR_64=/opt/nmapi/nmapi2/lib/hpux64 NMAPIDIR_32=/opt/nmapi/nmapi2/lib/hpux32 else NMAPIDIR_64=/opt/nmapi/nmapi2/lib/pa20_64 NMAPIDIR_32=/opt/nmapi/nmapi2/lib fi LD_LIBRARY_PATH=$ORA_CRS_HOME/lib:$NMAPIDIR_64:/usr/lib:$LD_LIBRARY_PATH SHLIB_PATH=$ORA_CRS_HOME/lib32:$NMAPIDIR_32:$SHLIB_PATH export LD_LIBRARY_PATH export SHLIB_PATH ;; SunOS) case `/bin/uname -i` in i86pc) LD_LIBRARY_PATH=$ORA_CRS_HOME/lib:/opt/ORCLcluster/lib:/usr/lib:/usr/ucblib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH ;; *) LD_LIBRARY_PATH=$ORA_CRS_HOME/lib32:/opt/ORCLcluster/lib:/usr/lib:/usr/ucblib:$LD_LIBRARY_PATH LD_LIBRARY_PATH_64=$ORA_CRS_HOME/lib:/opt/ORCLcluster/lib:/usr/lib:/usr/ucblib:$LD_LIBRARY_PATH_64 export LD_LIBRARY_PATH export LD_LIBRARY_PATH_64 ;; esac ;; AIX) LIBPATH=$ORA_CRS_HOME/lib:$ORA_CRS_HOME/lib32:/usr/lib:$LIBPATH LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH export LIBPATH export LD_LIBRARY_PATH ;; OSF1) LD_LIBRARY_PATH=$ORA_CRS_HOME/lib:/shlib:/usr/lib export LD_LIBRARY_PATH ;; *) /bin/echo "ERROR: Unknown Operating System" exit -1 ;; esac OCRCONFIG=$OCRCONFIGDIR/ocr.loc OCRLOC=$ORACLE_HOME/cdata/localhost/local.ocr if [ ! -d "$OCRCONFIGDIR" ];then $ECHO "$OCRCONFIGDIR does not exist. Creating it now." $MKDIR -p $OCRCONFIGDIR fi $CHOWN root $OCRCONFIGDIR $CHGRP $CSS_DBA_GROUP $OCRCONFIGDIR $CHMOD 755 $OCRCONFIGDIR INIT_OCR=FALSE RESET_CSS=TRUE RESET_OCR=TRUE CREATE_KEYS=FALSE if [ "$CFG_OPTION" = "add" ]; then # OCR & CSS will be initialized INIT_OCR=TRUE CREATE_KEYS=TRUE elif [ "$CFG_OPTION" = "delete" ]; then # This case if for delete option. RESET_OCR=FALSE RESET_CSS=FALSE else # OCR and CSS will not be deleted but reset to new Oracle home RESET_OCR=TRUE RESET_CSS=TRUE fi # Check if we have to create/update ocr.loc for single node CSS if [ "$INIT_OCR" = "TRUE" ]; then echo ocrconfig_loc=$OCRLOC > $OCRCONFIG echo local_only=TRUE >> $OCRCONFIG $CHOWN $CSS_ORACLE_OWNER $OCRCONFIG $CHGRP $CSS_DBA_GROUP $OCRCONFIG $CHMOD 644 $OCRCONFIG # check if cdata directory exists if [ ! -d "$ORACLE_HOME/cdata" ]; then $MKDIR -p $ORACLE_HOME/cdata $CHOWN $CSS_ORACLE_OWNER $ORACLE_HOME/cdata $CHGRP $CSS_DBA_GROUP $ORACLE_HOME/cdata $CHMOD 755 $ORACLE_HOME/cdata fi # Check if localhost dierctory under cdata exists if [ ! -d "$ORACLE_HOME/cdata/localhost" ]; then $MKDIR -p $ORACLE_HOME/cdata/localhost $CHOWN $CSS_ORACLE_OWNER $ORACLE_HOME/cdata/localhost $CHGRP $CSS_DBA_GROUP $ORACLE_HOME/cdata/localhost $CHMOD 755 $ORACLE_HOME/cdata/localhost fi # Check if localhost dierctory under cdata exists if [ ! -f "$ORACLE_HOME/cdata/localhost/local.ocr" ]; then $CP /dev/null $ORACLE_HOME/cdata/localhost/local.ocr $CHOWN $CSS_ORACLE_OWNER $ORACLE_HOME/cdata/localhost $CHGRP $CSS_DBA_GROUP $ORACLE_HOME/cdata/localhost $CHMOD 755 $ORACLE_HOME/cdata/localhost fi $CHOWN $CSS_ORACLE_OWNER $OCRLOC $CHGRP $CSS_DBA_GROUP $OCRLOC $CHMOD 644 $OCRLOC BASE_LOGDIR=$ORACLE_HOME/log LOGDIR=$BASE_LOGDIR/$HOST CSS_LOGDIR=$LOGDIR/cssd OCR_LOGDIR=$LOGDIR/client # Create CRS log directories for d in $BASE_LOGDIR $LOGDIR $CSS_LOGDIR $OCR_LOGDIR do $MKDIRP $d || { $ECHO $?; exit 1; } done for d in $BASE_LOGDIR $LOGDIR $CSS_LOGDIR $OCR_LOGDIR do $CHOWN $CSS_ORACLE_OWNER $d || { $ECHO $?; exit 1; } $CHGRP $CSS_DBA_GROUP $d || { $ECHO $?; exit 1; } done $CHMOD 1755 $BASE_LOGDIR || { $ECHO $?; exit 1; } $CHMOD 1755 $LOGDIR || { $ECHO $?; exit 1; } for d in $CSS_LOGDIR $OCR_LOGDIR do $CHMOD 770 $d || { $ECHO $?; exit 1; } done # Create an empty alert log file ALERTFILE=$LOGDIR/alert$HOST.log $TOUCH $ALERTFILE $CHOWN $CSS_ORACLE_OWNER $ALERTFILE || { $ECHO $?; exit 1; } $CHGRP $CSS_DBA_GROUP $ALERTFILE || { $ECHO $?; exit 1; } $CHMOD 644 $ALERTFILE || { $ECHO $?; exit 1; } elif [ "$RESET_OCR" = "TRUE" ]; then CURR_OCRLOC=`$AWK -F= '/ocrconfig_loc/ {print $2}' < $OCRCONFIG` NEW_OCRLOC=`echo $DEST_ORACLE_HOME`/cdata/localhost/local.ocr if [ ! -f $NEW_OCRLOC ]; then # check if cdata directory exists if [ ! -d "$DEST_ORACLE_HOME/cdata" ]; then $MKDIR $DEST_ORACLE_HOME/cdata $CHOWN $CSS_ORACLE_OWNER $DEST_ORACLE_HOME/cdata $CHGRP $CSS_DBA_GROUP $DEST_ORACLE_HOME/cdata $CHMOD 755 $DEST_ORACLE_HOME/cdata fi # Check if localhost dierctory under cdata exists if [ ! -d "$DEST_ORACLE_HOME/cdata/localhost" ]; then $MKDIR $DEST_ORACLE_HOME/cdata/localhost $CHOWN $CSS_ORACLE_OWNER $DEST_ORACLE_HOME/cdata/localhost $CHGRP $CSS_DBA_GROUP $DEST_ORACLE_HOME/cdata/localhost $CHMOD 755 $DEST_ORACLE_HOME/cdata/localhost fi fi if [ -s $CURR_OCRLOC -a "$CURR_OCRLOC" != "$NEW_OCRLOC" ]; then #Copying the existing OCR file to new location $CP $CURR_OCRLOC $NEW_OCRLOC fi # re-create OCR: the OCR datafile contains its own path. $CP /dev/null $NEW_OCRLOC CREATE_KEYS=TRUE $CHOWN $CSS_ORACLE_OWNER $NEW_OCRLOC $CHGRP $CSS_DBA_GROUP $NEW_OCRLOC $CHMOD 644 $NEW_OCRLOC $ECHO ocrconfig_loc=$NEW_OCRLOC > $OCRCONFIG $ECHO local_only=TRUE >> $OCRCONFIG $CHOWN $CSS_ORACLE_OWNER $OCRCONFIG $CHGRP $CSS_DBA_GROUP $OCRCONFIG $CHMOD 644 $OCRCONFIG BASE_LOGDIR=$DEST_ORACLE_HOME/log LOGDIR=$BASE_LOGDIR/$HOST CSS_LOGDIR=$LOGDIR/cssd OCR_LOGDIR=$LOGDIR/client # Create CRS log directories for d in $BASE_LOGDIR $LOGDIR $CSS_LOGDIR $OCR_LOGDIR do $MKDIRP $d || { $ECHO $?; exit 1; } done for d in $BASE_LOGDIR $LOGDIR $CSS_LOGDIR $OCR_LOGDIR do $CHOWN $CSS_ORACLE_OWNER $d || { $ECHO $?; exit 1; } $CHGRP $CSS_DBA_GROUP $d || { $ECHO $?; exit 1; } done $CHMOD 1755 $BASE_LOGDIR || { $ECHO $?; exit 1; } $CHMOD 1755 $LOGDIR || { $ECHO $?; exit 1; } for d in $CSS_LOGDIR $OCR_LOGDIR do $CHMOD 770 $d || { $ECHO $?; exit 1; } done # Create an empty alert log file ALERTFILE=$LOGDIR/alert$HOST.log $TOUCH $ALERTFILE $CHOWN $CSS_ORACLE_OWNER $ALERTFILE || { $ECHO $?; exit 1; } $CHGRP $CSS_DBA_GROUP $ALERTFILE || { $ECHO $?; exit 1; } $CHMOD 644 $ALERTFILE || { $ECHO $?; exit 1; } fi if [ "$RESET_CSS" = "TRUE" ]; then #Create SCR Home dir, owned by root 755 $MKDIR -p $SCRDIR || { $ECHO $?; exit 1; } $CHOWN root $SCRBASE || { $ECHO $?; exit 1; } $CHOWN root $SCRDIR || { $ECHO $?; exit 1; } $CHMOD 755 $SCRBASE || { $ECHO $?; exit 1; } $CHMOD 755 $SCRDIR || { $ECHO $?; exit 1; } #Reset the configuration of CSS CH=$DEST_ORACLE_HOME CRSCTL=$CH/bin/crsctl # Initialize the system SCR settings $CRSCTL create scr $CSS_ORACLE_OWNER for d in css css/init css/log css/auth do $CHMOD 711 $CH/$d done # Initialize the OCR repository the first time we come through the script. SCRIPT_STATUS=0 CLSCFG=$CH/bin/clscfg if [ "$CREATE_KEYS" = "TRUE" ]; then #Create CSS keys only if needed to $CLSCFG -local -o $CH -l "$CSS_LANGUAGE_ID" SCRIPT_STATUS=$? case $? in 0) $ECHO "Configuration for local CSS has been initialized";; 105) $ECHO "Configuration for local CSS has already been initialized";; *) $ECHO "Failed to initialize configuration for local CSS";; esac fi if [ $SCRIPT_STATUS = 0 ]; then OCSSDPID=`$PSE | $GREP 'ocssd' | $GREP -v grep | $AWK '{print $1}'` if [ "$OCSSDPID" = "" ]; then $ECHO "" elif [ "$RESET_OCR" = "TRUE" ]; then $ECHO "Stale CSS daemon is running... killing it now" $CP $IT "$IT".orig eval $RMITAB $INIT q $CSSDKILL -9 $OCSSDPID fi #cleanup previous NS endpoints; could be different owner NSReset # create NS endpoint directories if necessary NSSetup || { $ECHO $?; exit 1; } $RMF $ID/init.cssd # basic copies first... $CP $CH/css/admin/init.cssd $ID/init.cssd for rc in $RCALLDIR do $RMF $rc/"$RC_START"init.cssd $RMF $rc/"$RC_KILL"init.cssd $RMF $rc/"$RC_KILL_OLD"init.cssd done for rc in $RCSDIR do $LNS $ID/init.cssd $rc/"$RC_START"init.cssd || { $ECHO $?; exit 1; } done for rc in $RCKDIR do $LNS $ID/init.cssd $rc/"$RC_KILL"init.cssd || { $ECHO $?; exit 1; } done $CP $IT "$IT".orig eval $RMITAB $INIT q $SLEEP 10 eval $ADDITAB # installl CSS and start it up. $ID/init.cssd start $INIT q # Now wait for it to come up $ECHO "Checking the status of new Oracle init process..." if $CRSCTL check install -wait 600 then $ECHO "Oracle CSS service is installed and running under init(1M)" else # problems, clean up. $ECHO "Giving up: Oracle CSS stack appears NOT to be running." for rc in $RCALLDIR do $RMF $rc/"$RC_START"init.cssd $RMF $rc/"$RC_KILL"init.cssd $RMF $rc/"$RC_KILL_OLD"init.cssd done $ECHO "Oracle CSS service would not start as installed" $ECHO "Automatic Storage Management(ASM) cannot be used until Oracle CSS service is started" fi else $ECHO "Failed configure CSS. Fix the problem and rerun this script from destination Oracle home with 'reset' argument" exit 1 fi else #if RESET_CSS=FALSE, means delete CSS. Remove init scripts here eval $RMITAB $RMF $IT.no_cssd $ID/init.cssd stop for rc in $RCALLDIR do $RMF $rc/"$RC_START"init.cssd $RMF $rc/"$RC_KILL"init.cssd $RMF $rc/"$RC_KILL_OLD"init.cssd done $RMF $ID/init.cssd $INIT q #cleanup SCR directories $RMRF $SCRBASE #cleanup NS endpoints NSReset fi if [ "$RESET_OCR" = "FALSE" ]; then #Deleteing OCR here so CSS is deconfigured/deinstalled if [ -f $OCRCONFIG ]; then OCRLOC=`$AWK -F= '/ocrconfig_loc/ {print $2}' < $OCRCONFIG` $RMF $OCRCONFIG if [ ! -z "$OCRLOC" ]; then $RMF $OCRLOC fi fi fi