cr_dbfs_exeprimdb.ksh
echo "RDBMS DB Name : $DBNAME"
echo "GG Instance Name : $GGINST"
echo "GG Instance Location : $GGLOC"
echo "Preferred Instance List : $DBINSTLST"
echo "SCAN Hostname : $CSCAN"
### cd /oracle/admin/scripts/proj
### tar -xvf /oracle/admin/scripts/proj/APPGold_20190211.tar
mv /oracle/admin/scripts/proj/appgold /oracle/admin/scripts/proj/$DBFSNM
cd /oracle/admin/scripts/proj/$DBFSNM
### Replace appgold with rvkapp with associated GG instance
find . -name '*appgold*' -exec bash -c ' mv $0 ${0/\appgold/$DBFSNM}' {} \;
### Replace APPNM, GG_INST and GG_LOC in ggini file
sed -i "s/APPNM=?????/APPNM=$DBFSNM/g" *ggini
sed -i "s/GG_INST=?????/GG_INST=$GGINST/g" *ggini
sed -i "s/GG_LOC=?????/GG_LOC=$GGLOC/g" *ggini
## Replace string "ggini" file location in all function scripts
sed -i "s/appgold\/appgold.ggini/$DBFSNM\/$DBFSNM.ggini/g" *.ksh
### Replace mount config file
sed -i "s/appgold/$DBFSNM/g" mount*
sed -i "s/DBFSGOLD/$DBNAME/g" mount*conf
-- Scripts to execute in ONE Instance on RDBMS
. /oracle/admin/scripts/proj/$DBFSNM/$DBFSNM.ggini
### Create Service on Primary, execute on one node of each cluster (Primary and Standby)
$PROJDIR/dbfs_cr_svc_parm_"$APPNM"_fn.ksh $DBNAME $DBFSNM $DBINSTLST
### Create tablespace and username, Execute on Primary DB only
$PROJDIR/dbfs_cr_tblspusr_parm_"$APPNM"_fn.ksh dbfs_$DBFSNM 1G 1G
### Create objects Execute on Primary DB only
$PROJDIR/dbfs_cr_objs_parm_"$APPNM"_fn.ksh $DBFSNM dbfs_$DBFSNM
### Add resource executed one node of each cluster (Primary and Standby)
$PROJDIR/crs_add_res_dbfs_parm_"$APPNM"_fn.ksh $DBFSNM $DBNAME $PROJDIR
### Add dbfs mount to GoldenGate instance, executed one node of each cluster (Primary and Standby)
$PROJDIR/xag_add_proj_fs_parm_"$APPNM"_fn.ksh $GGINST $DBFSNM $DBNAME
cr_dbfs_exestdy.ksh
#!/usr/bin/ksh
export DBFSNM=ftk ### DBFSNM is mount name in lower case without dbfs_ prefix
export DBNAME=DBFSXT02 ### DBNAME RDBMS database name the mount will be created
export GGINST=ggvat002 ### GGINST Goldengate instance to which dbfs mount will be assigned to
export GGLOC=VA ### GGLOC Location of the Goldengate instance (TX/VA/PA)
export DBINSTLST="DBFSXT022,DBFSXT021,DBFSXT023" ### RDBMS DB Instance list
export CSCAN=CORMT050-SCAN.BANKOFAMERICA.COM ### SCAN Hostname of the cluser
echo "Application mount : $DBFSNM"
echo "RDBMS DB Name : $DBNAME"
echo "GG Instance Name : $GGINST"
echo "GG Instance Location : $GGLOC"
echo "Preferred Instance List : $DBINSTLST"
echo "SCAN Hostname : $CSCAN"
### cd /oracle/admin/scripts/proj
### tar -xvf /oracle/admin/scripts/proj/APPGold_20190221.tar
mv /oracle/admin/scripts/proj/appgold /oracle/admin/scripts/proj/$DBFSNM
cd /oracle/admin/scripts/proj/$DBFSNM
### Replace appgold with rvkapp with associated GG instance
find . -name '*appgold*' -exec bash -c ' mv $0 ${0/\appgold/$DBFSNM}' {} \;
### Replace APPNM, GG_INST and GG_LOC in ggini file
sed -i "s/APPNM=?????/APPNM=$DBFSNM/g" *ggini
sed -i "s/GG_INST=?????/GG_INST=$GGINST/g" *ggini
sed -i "s/GG_LOC=?????/GG_LOC=$GGLOC/g" *ggini
## Replace string "ggini" file location in all function scripts
sed -i "s/appgold\/appgold.ggini/$DBFSNM\/$DBFSNM.ggini/g" *.ksh
### Replace mount config file
sed -i "s/appgold/$DBFSNM/g" mount*
sed -i "s/DBFSGOLD/$DBNAME/g" mount*conf
-- Scripts to execute in ONE Instance on RDBMS
. /oracle/admin/scripts/proj/$DBFSNM/$DBFSNM.ggini
### Create Service on Standby, execute on one node of each cluster (Primary and Standby)
$PROJDIR/dbfs_cr_svc_parm_"$APPNM"_fn.ksh $DBNAME $DBFSNM $DBINSTLST
### Add resource executed one node of each cluster (Primary and Standby)
$PROJDIR/crs_add_res_dbfs_parm_"$APPNM"_fn.ksh $DBFSNM $DBNAME $PROJDIR
### Add dbfs mount to GoldenGate instance, executed one node of each cluster (Primary and Standby)
$PROJDIR/xag_add_proj_fs_parm_"$APPNM"_fn.ksh $GGINST $DBFSNM $DBNAME
xag_add_proj_fs_parm_appgold_fn.ksh
#!/usr/bin/ksh
##########################################################################
##### This function creates tablespace and username #####
##### Parameter : #####
##### gginst : GoldenGate Instance for the application #####
##### dbfsmt : DBFS Mount FS name #####
##### root dbfs mount directory #####
##### Note : dbfs_ appends to dbfsmt parameter and #####
##### dbfs for GG instance is dbfs_$gginst #####
##### #####
##########################################################################
. /oracle/admin/scripts/ggcommon/gg_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
clear
if [ -n "$1" ]; then
gginst=`echo $1 | tr '[A-Z]' '[a-z]'`
echo "Goldengate Instance " $gginst | tee -a $LOG
else
echo "Missing Goldengate Instance name ... " | tee -a $LOG
exit 1
fi
if [ -n "$2" ]; then
dbfsmt=`echo $2 | tr '[A-Z]' '[a-z]'`
echo "DBFS Mount FS Name " $dbfsmt | tee -a $LOG
else
echo "Missing Mount FS Name parameter ... " | tee -a $LOG
exit 1
fi
if [ -n "$3" ]; then
cdbnm=`echo $3 | tr '[A-Z]' '[a-z]'`
echo "Database Name " $cdbnm | tee -a $LOG
else
echo "Missing Database Name parameter ... " | tee -a $LOG
exit 1
fi
xag_add_proj_fs $gginst $dbfsmt $cdbnm | tee -a $LOG
appgold.ggini
# Template ggini file to setup environment
# #####################################################################
##############################################################################
### This file used to create GG Hub ini file #
### Revision History: #
### #
### REV DATE BY DESCRIPTION #
### --- ------ -------------- ------------------------------------------ #
### 1.0 181106 Raju Kakarlapudi Initial Release #
### #
### Note : Modify the following variables for each new application #
### #
### GG_INST Instance name associated to application #
### ORACLE_HOME RDBMS Home #
### #
###############################################################################
export TZ=UTC ### Same for all Hub DB Cluster
export APPNM=????? ### App name
export GG_LOC=????? ### Location of GG Hub
export GG_INST=????? ### GG Instance for app
export XAG_HOME=/oracle/product/xag_91
export CRS_HOME=`cat /etc/oratab|grep -i '^crs'|awk -F: '{ print $2}'`
export ORACLE_HOME=$(grep $ORACLE_SID":" /etc/oratab |awk -F: '{print $2}')
export PROJDIR=/oracle/admin/scripts/proj/$APPNM
export LOGDIR=$PROJDIR/LOGS
######################################################################
# GGS_HOME
######################################################################
export GGS_HOME=/oracle/product/$GG_INST
######################################################################
# GG_SITE
# This sets the site, future use
######################################################################
#export GG_SITE=06
#export GG_SITE=05
#export GG_SITE=04
#export GG_SITE=03
#export GG_SITE=02
export GG_SITE=01
######################################################################
# LD_LIBRARY_PATH
# This sets the site geography
######################################################################
export LD_LIBRARY_PATH=$ORACLE_HOME/lib/lib/amd64/server:$GGS_HOME:$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib:/usr/lib:/usr/ccs/lib:/opt/SUNWspro/lib:/usr/openwin/lib:/usr/ucblib:/usr/dt/lib:$ORACLE_HOME/oracm/lib:
export PATH=$ORACLE_HOME/bin:/oracle/dba/local:/usr/local/bin:/usr/bin:/usr/ccs/bin:/usr/ucb:/etc:/usr/sbin:/sbin:/usr/dt/bin:/usr/lpp/X11/bin:/opt/bin:/usr/lbin:/usr/bin/X11:/usr/X11R6/bin:/usr/openwin/bin:/opt/STSssh/bin:/oracle/dba/standard:/oracle/dba/standard/rman:/opt/pb/bin:/opt/UDSssh/bin:/banktools:/banktools/local/bin:/opt/SDSssh/bin/scp:/oracle/dba/foglight/script:/usr/openv/netbackup/bin:$GGS_HOME:/opt/VRTSvmsa/bin/vmsa:/banktools/pbrun/3.2/bin:$ORACLE_HOME/bin:$ORACLE_HOME/oracm/bin:$ORACLE_HOME/OPatch:.
# for OEM12c GG monitoring
# export JAVA_HOME=/oracle/product/12.1.0/oem_1/agent/core/12.1.0.2.0/jdk/jre
# export PATH=/bin::/ggate01/product/12.1.2/11.2.0/gg_1:/bin:/oracle/dba/local:/usr/local/bin:/usr/bin:/usr/ccs/bin:/usr/ucb:/etc:/usr/sbin:/sbin:/usr/dt/bin:/usr/lpp/X11/bin:/opt/bin:/usr/lbin:/usr/bin/X11:/usr/X11R6/bin:/usr/openwin/bin:/opt/STSssh/bin:/oracle/dba/standard:/oracle/dba/standard/rman:/opt/pb/bin:/opt/UDSssh/bin:/banktools:/banktools/local/bin:/opt/SDSssh/bin/scp:/oracle/dba/foglight/script:/usr/openv/netbackup/bin:/ggate01/product/12.1.2/11.2.0/gg_1:/opt/VRTSvmsa/bin/vmsa:/banktools/pbrun/3.2/bin:/oracle/product/12.1.0/db_1/bin:/oracle/product/12.1.0/db_1/oracm/bin:/oracle/product/12.1.0/db_1/OPatch:.
# Change the prompt
PS1="\\
\${PWD} \\
\${SNAME} [\${ORACLE_SID}] [\${GG_INST}"_"$GG_LOC]-> "
export PS1
# List of alias
#
alias dirprm='cd $GGS_HOME/dirprm'
alias ggcom='cd /oracle/admin/scripts/ggcommon'
alias dbfsdir='cd /oracle/admin/scripts/dbfscommon'
alias projscr='cd /oracle/admin/scripts/proj/$APPNM'
alias projlog='cd $LOGDIR'
alias ggdir='cd $GGS_HOME'
###### Check scripts curr
alias ggcmd='. /oracle/admin/scripts/ggcommon/sho_gg_cmds_fn.ksh'
alias ggdbr='. /oracle/admin/scripts/ggcommon/gg_init_fn.ksh'
alias showsrv='. /oracle/admin/scripts/ggcommon/sho_srv_fn.ksh'
##### The following two scripts need testing
alias dbfs_lob='. /oracle/admin/scripts/dbfscommon/dbfs_sho_lob_fn.ksh'
alias dbfscmd='. /oracle/admin/scripts/dbfscommon/sho_dbfs_cmds_fn.ksh'
echo "GGS_HOME is : " $GGS_HOME
echo
echo
echo
mount_dbfs_appgold.bsh
#!/bin/bash
### This script is from Note 1054431.1, ensure you have the latest version
### Note 1054431.1 provides information about the setup required to use this script
### MCulp modified
### The start has been modified to work with BOA environment
###############################################
# mount-dbfs.bsh start / stop / check / status
###############################################
#####################################################################
##### Raju Kakarlapudi Notes #####
##### Modify the following as per the requirements #####
##### #####
##### CONFIG : Location of mount-dbfs_xxx.conf file #####
##### nohup dbfs_client command #####
##### nohup $ORACLE_HOME/bin/dbfs_client db_user/passws@conn_string -o $MOUNT_OPTIONS /dbfs_filesystem < passwd_filepath &
##### It's recommended to create password file in same location #####
##### of mount scripts #####
##### DO NOT CHANGE PASSWORD file location #####
##### /oracle/admin/scripts/clle_dbfscommon/.gg_password i #####
##### db_user/passwsd@conn_string #####
##### dbfs_filesystem #####
##### *** DO NOT CHANGE MOUNT_OPTIONS *** #####
##### #####
#####################################################################
###########################################
### All configuration parameters are now in an external file
###########################################
###########################################
### Ensure that when multiple mounts are used, there are separate copies
### of mount-dbfs.sh that reference separate CONFIG file pathnames
# CONFIG=/etc/oracle/mount-dbfs.conf
# MCulp change location #1
# This should have a conf file unique for each mount
# The location is /oracle/admin/scripts for both the script
# and the config file
##############################################################
echo "not4good" > /tmp/.dbfs-passwd_appgold
echo "not4good" > /oracle/admin/scripts/proj/appgold/.gg_password_appgold
CONFIG=/oracle/admin/scripts/proj/appgold/mount-dbfs_appgold.conf
export GRID_HOME=`cat /etc/oratab|grep -i '^crs'|awk -F: '{ print $2}'`
export ORACLE_HOME=$(grep $ORACLE_SID":" /etc/oratab |awk -F: '{print $2}')
echo $ORACLE_HOME
echo $GRID_HOME
###########################################
### No editing is required below this point
###########################################
### date-based versioning YYYYMMDD
VERSION=20160215
### source configuration file
if [ -r $CONFIG ]; then
. $CONFIG
else
echo "$0 ERROR: cannot read config file $CONFIG, aborting"
exit 1
fi
### the DBNAME should be set to the CDB name (from config file)
CDB=$DBNAME
### determine platform
UNAME_S=`uname -s`
if [ $UNAME_S = 'Linux' ]; then LINUX=1; SOLARIS=0;
elif [ $UNAME_S = 'SunOS' ]; then LINUX=0; SOLARIS=1;
fi
GREP=/bin/grep
AWK=/bin/awk
SED=/bin/sed
ECHO=/bin/echo
LOGGER="/bin/logger -t DBFS_${MOUNT_POINT}"
RMF='/bin/rm -f'
TOUCH=/bin/touch
CHMOD=/bin/chmod
PS=/bin/ps
SLEEP=/bin/sleep
KILL=/bin/kill
BASENAME=/bin/basename
STAT=/usr/bin/stat
ID=/usr/bin/id
WC=/usr/bin/wc
SRVCTL=$ORACLE_HOME/bin/srvctl
DBFS_CLIENT=$ORACLE_HOME/bin/dbfs_client
HN=/bin/hostname
PERL=/usr/bin/perl
MOUNT=/bin/mount
### ensure messages are displayed in English for pattern matching
LANG=en_US.UTF-8
NLS_LANG=American_America.AL32UTF8
NUMACTL=/usr/bin/numactl
RPMCTL=/bin/rpm
if [ -z "$STATUS_TIMEOUT" ]; then STATUS_TIMEOUT=0; fi
if [ $LINUX -eq 1 ]; then
MOUNT=/bin/mount
XARGS='/usr/bin/xargs -r'
FUSERMOUNT=/bin/fusermount
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64
elif [ $SOLARIS -eq 1 ]; then
MOUNT=/sbin/mount
XARGS=/usr/bin/xargs
UMOUNT=/usr/sbin/umount
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/usr/lib:/lib
fi
DBFS_PWDFILE=$DBFS_PWDFILE_BASE.$$
export ORACLE_HOME LD_LIBRARY_PATH TNS_ADMIN
export STAT MOUNT_POINT PERL_ALARM_TIMEOUT SOLARIS LINUX
export PATH=$ORACLE_HOME/bin:$PATH
export STATUS_TIMEOUT
export LANG NLS_LANG
logit () {
### type: info, error, debug
type=$1
msg=$2
if [ "$type" = "info" ]; then
$ECHO $msg
$LOGGER -p ${LOGGER_FACILITY}.info "$msg"
elif [ "$type" = "error" ]; then
$ECHO $msg
$LOGGER -p ${LOGGER_FACILITY}.error "$msg"
elif [ "$type" = "debug" ]; then
$ECHO $msg
$LOGGER -p ${LOGGER_FACILITY}.debug "$msg"
fi
}
### must not be root
if [ `$ID -u` -eq 0 ]; then
logit error "Run this as the Oracle software owner, not root"
exit 1
fi
### determine how we were called, derive location
SCRIPTPATH=$0
SCRIPTNAME=`$BASENAME $SCRIPTPATH`
$ECHO $SCRIPTPATH | $GREP ^/ > /dev/null 2>&1
if [ $? -ne 0 ]; then
MYDIR=`pwd`
SCRIPTPATH=${MYDIR}/${SCRIPTPATH}
fi
### must cd to a directory where the oracle owner can get CWD
cd /tmp
case "$1" in
# Start begins here
##########################################
'start')
echo "Start...."
echo
logit info "$SCRIPTNAME mounting DBFS at $MOUNT_POINT from database $DBNAME"
### check to see if it is already mounted
$SCRIPTPATH status > /dev/null 2>&1
if [ $? -eq 0 ]; then
logit error "$MOUNT_POINT already mounted, use $SCRIPTNAME stop before attempting to start"
$SCRIPTPATH status
exit 1
fi
### set the ORACLE_SID dynamically based on OCR info, if it is running
# if RAC, set SID with following command
export ORACLE_SID=$($SRVCTL status instance -d $DBNAME -n `$HN` | \
$GREP 'is running' | $AWK '{print $2}' )
# if single instance, set ORACLE_SID based on below command instead
if [ -z "$ORACLE_SID" ]; then
export ORACLE_SID=$($SRVCTL config db -d $DBNAME | $GREP 'instance' | $AWK '{print $3}')
fi
logit info "ORACLE_SID is $ORACLE_SID"
### further checks required if we are using a PDB
### if the local instance isn't running (because ORACLE_SID is null) don't bother
if [ -n "$ORACLE_SID" -a "$IS_PDB" = 'true' ]; then
logit info "IS_PDB = true"
HOSTNAME=`$HN -s`
### by checking to see if the service is running on the local instance,
### we can deterine whether we should continue or not
PDB_SERVICE_STATE=$($SRVCTL status service -d $CDB -s $PDB_SERVICE | \
$GREP "$ORACLE_SID" )
### if the output from the last command is > 0, service is running locally
if [ -n "$PDB_SERVICE_STATE" ]; then
logit info "PDB service is online"
else
logit error "PDB service is offline. Exiting"
exit 2
fi
fi
### if there's no SID defined locally or it isn't running, stop
if [ -z "$ORACLE_SID" -a "$WALLET" = 'false' ]; then
logit error "No running ORACLE_SID available on this host, exiting"
exit 2
fi
### version comparison function, used in numa section
# Compare string versions
# Returns in stdout and in the err code
# 0 - a equal b
# 1 - a greater than b
# 255(-1) - a less than b
# version should be in format 1.2.3.4.5
# It might be a short version like 1.2.3 or 1.2.3.
version_cmp ()
{
local -a al=(`$ECHO $1 | $SED -e 's/\./ /g'`)
local -a bl=(`$ECHO $2 | $SED -e 's/\./ /g'`)
local -i i=0
for ((i=0; i < ${#al[@]}; i++)); do
# ap is always non-empty. Gap is not possible in both arrays
local ap=${al[$i]}
local bp=${bl[$i]}
# Only $ap defined. $a longer (bigger) then $b
if [ -z "$bp" ] || [ $ap -gt $bp ]; then
$ECHO "1"
return 1
elif [ $ap -lt $bp ]; then
$ECHO "-1"
return -1
fi
done
# Check for the next part from @bl. It means $a shorter (smaller) then $b
if [ -n "${bl[$i]}" ]; then
$ECHO "-1"
return -1
fi
# Both arrays ended at the same time. They are equal
$ECHO "0"
return 0
}
# MCulp commenting out the whole section as we do not need this currently
###########################################################################################
# ### if numa system on Linux, update mount_options for bug 10004611
# if [ $LINUX -eq 1 ]; then
# RPMEXA=`$RPMCTL -q --queryformat '%{VERSION}' exadata-base`
# NUMASYS=`$NUMACTL --hardware | $GREP available: | cut -c1-18`
#
# ###Check if an X8 system and image greater than or equal to 11.2.3.3.0 to support numa mount option
# if [ "$NUMASYS" = 'available: 8 nodes' ]; then
# if [ `version_cmp $RPMEXA 11.2.3.3.0` -eq 0 ] || [ `version_cmp $RPMEXA 11.2.3.3.0` -eq 1 ]; then
# # MOUNT_OPTIONS=$MOUNT_OPTIONS,numa
# MOUNT_OPTIONS=$MOUNT_OPTIONS
# else
# MOUNT_OPTIONS=$MOUNT_OPTIONS
# fi
#
# ###Check if an X5-2 system to support numa mount option
# elif [ "$NUMASYS" = 'available: 2 nodes' ]; then
# # MOUNT_OPTIONS=$MOUNT_OPTIONS,numa
# MOUNT_OPTIONS=$MOUNT_OPTIONS
# ###Check for all other X2 systems, do not use numa option
# elif [ "$NUMASYS" = 'available: 1 nodes' ]; then
# MOUNT_OPTIONS=$MOUNT_OPTIONS
# ###Exit for errors or unexpected values, post in messages file
# else
# logit error "Unexpected numa value. Exiting."
# logit error "Numa hardware value is: $NUMASYS"
# logit error "RPM version of Exadata base is: $RPMEXA"
# exit 1
# fi
# else
# logit info "skipped numa check for Solaris...not applicable"
# fi
###########################################################################################
### if using password-based startup, use this
if [ "$WALLET" = 'false' -a -n "$DBFS_PASSWD" ]; then
$RMF $DBFS_PWDFILE
if [ -f $DBFS_PWDFILE ]; then
logit error "please remove $DBFS_PWDFILE and try again"
exit 1
fi
$TOUCH $DBFS_PWDFILE
$CHMOD 600 $DBFS_PWDFILE
$ECHO $DBFS_PASSWD > $DBFS_PWDFILE
logit info "spawning dbfs_client command using SID $ORACLE_SID"
### if PDB, mount with this command
if [ "$IS_PDB" = 'true' ]; then
(nohup $DBFS_CLIENT ${DBFS_USER}@${PDB} -o $MOUNT_OPTIONS \
$MOUNT_POINT < $DBFS_PWDFILE | $LOGGER -p ${LOGGER_FACILITY}.info 2>&1 & ) &
### if not PDB, mount with this command instead
else
echo "Correct command...."
### MCulp changed
nohup $ORACLE_HOME/bin/dbfs_client dbfs_appgold/not4good@dbfs_appgold -o $MOUNT_OPTIONS /dbfs_appgold < /oracle/admin/scripts/proj/appgold/.gg_password_appgold &
# MOUNT_OPTIONS=rw,direct_io
# This is the original mount command unmodified
# MAKE SURE TO MODIFY THE entry after the @ symbol
# The next line is the original line
# (nohup $DBFS_CLIENT ${DBFS_USER}@ -o $MOUNT_OPTIONS \
# $MOUNT_POINT < $DBFS_PWDFILE | $LOGGER -p ${LOGGER_FACILITY}.info 2>&1 & ) &
# MOUNT_TNS as added to the conf file that is read in
########################################################################################
echo
echo $DBFS_USER
echo
echo $MOUNT_TNS
echo
echo $MOUNT_OPTIONS
echo
echo
# (nohup $DBFS_CLIENT ${DBFS_USER}@$MOUNT_TNS -o $MOUNT_OPTIONS \
# $MOUNT_POINT < $DBFS_PWDFILE | $LOGGER -p ${LOGGER_FACILITY}.info 2>&1 & ) &
fi
### if wallet is true, mount with this command
elif [ "$WALLET" = true ]; then
logit info "doing mount $MOUNT_POINT using SID $ORACLE_SID with wallet now"
(nohup $DBFS_CLIENT /@${DBFS_LOCAL_TNSALIAS} -o $MOUNT_OPTIONS,wallet \
$MOUNT_POINT | $LOGGER -p ${LOGGER_FACILITY}.info 2>&1 & ) &
fi
### allow time for the mount table update before checking it
$SLEEP 1
$RMF $DBFS_PWDFILE
### set return code based on success of mounting
$SCRIPTPATH status > /dev/null 2>&1
if [ $? -eq 0 ]; then
logit info "Start -- ONLINE"
exit 0
else
logit info "Start -- OFFLINE"
exit 1
fi
;;
############################################################
# MCulp Changed
# Added z to the fusermount options as the u by itself
# was not working correctly
############################################################
'stop')
$SCRIPTPATH status > /dev/null
if [ $? -eq 0 ]; then
logit info "unmounting DBFS from $MOUNT_POINT"
if [ $LINUX -eq 1 ]; then
logit info "umounting the filesystem using '$FUSERMOUNT -uz $MOUNT_POINT'"
# $FUSERMOUNT -u $MOUNT_POINT
$FUSERMOUNT -uz $MOUNT_POINT
elif [ $SOLARIS -eq 1 ]; then
logit info "umounting the filesystem using '$UMOUNT $MOUNT_POINT'"
$UMOUNT $MOUNT_POINT > /dev/null 2>&1
fi
$SCRIPTPATH status > /dev/null
if [ $? -eq 0 ]; then
logit error "Stop - stopped, but still mounted, error"
exit 1
else
logit info "Stop - stopped, now not mounted"
exit 0
fi
else
logit error "filesystem $MOUNT_POINT not currently mounted, no need to stop"
fi
;;
'check'|'status')
### check to see if it is mounted
### fire off a short process in perl to do the check (need the alarm builtin)
logit debug "Checking status now"
$PERL <<'TOT'
$timeout = $ENV{'PERL_ALARM_TIMEOUT'};
$SIG{ALRM} = sub {
### we have a problem and need to cleanup
exit 3;
die "timeout" ;
};
alarm $timeout;
eval {
$STATUSOUT=`$ENV{'STAT'} -f -c "%T" $ENV{'MOUNT_POINT'} 2>&1 `;
chomp($STATUSOUT);
### added fuseblk check for Linux 6 output
if ( ( $ENV{'SOLARIS'} == 1 && $STATUSOUT eq 'uvfs' ) ||
( $ENV{'LINUX'} == 1 && $STATUSOUT eq 'UNKNOWN (0x65735546)' ) ||
( $ENV{'LINUX'} == 1 && $STATUSOUT eq 'fuseblk' ) ) {
### status is okay
exit 0;
} elsif ( $STATUSOUT =~ /Transport endpoint is not connected/ ) {
### we have a problem, need to clean up
exit 2;
} else {
### filesystem is offline
exit 1;
}
};
TOT
RC=$?
### process return codes from the perl block
if [ $RC -eq 3 ]; then
STATUS_TIMEOUT=$(( $STATUS_TIMEOUT + 1 ))
logit error "Found timeout while checking status, cleaning mount automatically"
$SCRIPTPATH clean
logit debug "Check -- OFFLINE"
exit 1
elif [ $RC -eq 2 ]; then
STATUS_TIMEOUT=$(( $STATUS_TIMEOUT + 1 ))
logit error "Found error while checking status, cleaning mount automatically"
$SCRIPTPATH clean
logit debug "Check -- OFFLINE"
exit 1
elif [ $RC -eq 1 ]; then
logit debug "Check -- OFFLINE"
exit 1
elif [ $RC -eq 0 ]; then
logit debug "Check -- ONLINE"
exit 0
fi
;;
'restart')
logit info "restarting DBFS"
$SCRIPTPATH stop
$SLEEP 2
$SCRIPTPATH start
;;
# clean abort
# MCulp
# Added z to the fusermount option below
##########################################################################
'clean'|'abort')
logit info "cleaning up DBFS nicely using (fusermount -u|umount)"
if [ $LINUX -eq 1 ]; then
$FUSERMOUNT -u $MOUNT_POINT
elif [ $SOLARIS -eq 1 ]; then
$UMOUNT $MOUNT_POINT > /dev/null 2>&1
fi
$SLEEP 1
FORCE_CLEANUP=0
if [ $STATUS_TIMEOUT -gt 1 ]; then
FORCE_CLEANUP=1
else
$SCRIPTPATH status > /dev/null
if [ $? -eq 0 ]; then FORCE_CLEANUP=1; fi
fi
if [ $FORCE_CLEANUP -eq 1 ]; then
logit error "tried (fusermount -u|umount), still mounted, now cleaning with (fusermount -uz -z|umount -f) and kill"
if [ $LINUX -eq 1 ]; then
$FUSERMOUNT -u -z $MOUNT_POINT
elif [ $SOLARIS -eq 1 ]; then
$ECHO "running umount -f now"
$UMOUNT -f $MOUNT_POINT > /dev/null 2>&1
fi
if [ $LINUX -eq 1 ]; then
PIDS=`$PS -ef | $GREP -w "$MOUNT_POINT" | $GREP dbfs_client| $GREP -v grep | \
$AWK '{print $2}'`
if [ -n "$PIDS" ]; then $KILL -9 $PIDS; fi
PIDS=`$PS -ef | $GREP -w "$MOUNT_POINT" | $GREP mount.dbfs | $GREP -v grep | \
$AWK '{print $2}'`
if [ -n "$PIDS" ]; then $KILL -9 $PIDS; fi
elif [ $SOLARIS -eq 1 ]; then
PIDS=`$PS -ef | $GREP dbfs_client| $GREP -v grep | $AWK '{print $2}'`
REALPIDS=' '
for pid in $PIDS
do
ARGS=`pargs $pid`
$ECHO $ARGS | $GREP "$MOUNT_POINT$" > /dev/null
RET=$?
if [ $RET -eq 0 ]; then REALPIDS="$REALPIDS $pid"; fi
done
if [ -n "$REALPIDS" ]; then $KILL -9 $REALPIDS; fi
### do it a 2nd time to clean up others
if [ -n "$REALPIDS" ]; then $KILL -9 $REALPIDS; fi
PIDS=`$PS -ef | $GREP dbfs_client| $GREP -v grep | $AWK '{print $2}'`
REALPIDS=' '
for pid in $PIDS
do
ARGS=`pargs $pid`
$ECHO $ARGS | $GREP "$MOUNT_POINT$" > /dev/null
RET=$?
if [ $RET -eq 0 ]; then REALPIDS="$REALPIDS $pid"; fi
done
if [ -n "$REALPIDS" ]; then $KILL -9 $REALPIDS; fi
fi
exit 1
fi
;;
'version')
### simply show the version
echo "$VERSION"
;;
*)
$ECHO "Usage: $SCRIPTNAME { start | stop | check | status | restart | clean | abort | version }"
;;
esac
mount-dbfs_appgold.conf
### This file provides configuration for mount-dbfs.sh.
### Note 1054431.1 provides information about the setup required to use this script
############################################################################
##### Everyone must set these values #####
############################################################################
##### Raju Kakarlapudi Notes ###############################################
##### Modify the following as per the requirements #####
##### #####
##### DBNAME : DB Name where DBFS filesystem exists #####
##### MOUNT_POINT : mount name #####
##### DBFS_USER : dbfs username/password #####
##### ORACLE_HOME : RDBMS Oracle Home #####
##### GRID_HOME : CRS Home #####
##### MOUNT_TNS : TNS names for mount #####
##### *** Note password is used for ALL mounts for ease of support *** #####
##### DBFS_PASSWD : Common for all dbfs not4good #####
##### DBFS_PWDFILE_BASE : password file location #####
##### Ex: /tmp/.dbfs-passwd_app #####
##### #####
##### Note: Not using wallet and PDBs #####
##### *** DO NOT CHANGE MOUNT_OPTIONS *** #####
##### #####
###########################################################################
#
### Database name for the DBFS repository as used in "srvctl status database -d $DBNAME"
### If using PDB/CDB, this should be set to the CDB name
# DBNAME=fsdb
DBNAME=DBFSGOLD
### Mount point where DBFS should be mounted
# MOUNT_POINT=/dbfs_direct
MOUNT_POINT=/dbfs_appgold
### Username of the DBFS repository owner in database $DBNAME
# DBFS_USER=dbfs_user
DBFS_USER=dbfs_appgold/not4good
### RDBMS ORACLE_HOME directory path
# ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1
ORACLE_HOME=/oracle/product/12.1.0/db_1
### GRID HOME directory path
# GRID_HOME=/u01/app/12.1.0.2/grid
GRID_HOME=/oracle_crs/product/12.1.0.2/crs_1
### Syslog facility name (default user)
### Changed default from local3 to user for Solaris default support on 17-FEB-2012
### This will allow us to log messages to the syslog
### (/var/log/messages on Linux, /var/adm/messages on Solaris)
LOGGER_FACILITY=user
### mount options for dbfs_client; these are used for both wallet and non-wallet mounting
# MOUNT_OPTIONS=allow_other,direct_io
# Last working parameter
# MOUNT_OPTIONS=rw,direct_io
MOUNT_OPTIONS=allow_other,rw,direct_io,failover
# M Culp / M Bowen 08/09/2018
# This env variable was created for the following purpose
# This is used on the start section in the script to point to the
# tnsnames.ora entry for the dbfs mount
# the entry should be on all nodes where the mount could exist
# #############################################################################
MOUNT_TNS=dbfs_appgold
### if tracing is required, maybe consider parameter like the example below
### following example is commented out, only uncomment if directed by Oracle Support
#
### for 11.2.0.3 and earlier, fix_control=32 added per bug 13340960 to allow async statfs response
#MOUNT_OPTIONS=allow_other,direct_io,fix_control=32,trace_level=1,trace_file=/tmp/dbfs_client_trace.$$.log,trace_size=100
#
### for 11.2.0.4 and later, remove fix control
#MOUNT_OPTIONS=allow_other,direct_io,trace_level=1,trace_file=/tmp/dbfs_client_trace.$$.log,trace_size=100
### PERL_ALARM_TIMEOUT is number of seconds to wait for response from status command.
### After this, if no respnose, the script will run clean.
### NOTE: If this is longer than the clusterware check interval, bad things may happen.
### Adjust the CHECK_INTERVAL to ensure it is at least 2x as long as PERL_ALARM_TIMEOUT.
### Example:
### $ crsctl status res dbfs_mount -p|grep ^CHECK
### CHECK_INTERVAL=30
### $ crsctl modify res dbfs_mount -attr "CHECK_INTERVAL=32"
### $ crsctl status res dbfs_mount -p|grep ^CHECK
### CHECK_INTERVAL=32
PERL_ALARM_TIMEOUT=14
###########################################
### If using password-based authentication, set these
###########################################
### This is the plain text password for the DBFS_USER user
# DBFS_PASSWD=welcome1
DBFS_PASSWD=not4good
### The file used to temporarily store the DBFS_PASSWD so dbfs_client can read it
### This file is removed immediately after it is read by dbfs_client
### The actual filename used will have the PID appended to the name for uniqueness
### This variable should be a full pathname including a directory and the first part of a filename.
#
DBFS_PWDFILE_BASE=/tmp/.dbfs-passwd_appgold
###########################################
### If using wallet-based authentication, modify these
###########################################
### WALLET should be true if using a wallet, otherwise, false
WALLET=false
### TNS_ADMIN is the directory containing tnsnames.ora and sqlnet.ora used by DBFS
TNS_ADMIN=$ORACLE_HOME/network/admin
### TNS alias used for mounting with wallets
DBFS_LOCAL_TNSALIAS=fsdb.local
###########################################
### If using PDBs, modify these
###########################################
### Configure the following if this is a Pluggable Database (PDB)
### IS_PDB should be set to "true" or "false"
### PDB should be a TNS alias defined per instructions in Note 1054431.1.
### PDB_SERVICE should be a cluster database service defined per
### instructions in Note 1054431.1.
IS_PDB=false
PDB=pdbXX
PDB_SERVICE=dbfspdb
dbfs_cr_objs_parm_appgold_fn.ksh
#!/usr/bin/ksh
##########################################################################
##### This function creates DBFS objects in USER Schema #####
##### Parameter : #####
##### dbfsts : DBFS Tablespace Name #####
##### usernm : Username to connect and execute #####
##### $ORACLE_HOME/rdbms/admin/dbfs_create_filesystem.sql #####
##### Note : dbfs_ appends to dbfsts (Tablespace name) parameter #####
##### #####
##########################################################################
. /oracle/admin/scripts/dbfscommon/dbfs_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
clear
if [ -n "$1" ]; then
dbfsts=`echo $1 | tr '[A-Z]' '[a-z]'`
echo "DBFS Tablespace name " $dbfsts | tee -a $LOG
else
echo "Missing DBFS Tablespace parameter ... " | tee -a $LOG
exit 1
fi
if [ -n "$2" ]; then
usernm=`echo $2 | tr '[a-z]' '[A-Z]'`
echo "DBFS USERNAME " $usernm | tee -a $LOG
else
echo "Missing username ... " | tee -a $LOG
exit 1
fi
echo
echo "Create objects for dbfs ...." | tee -a $LOG
echo
dbfs_cr_objs_parm $dbfsts $usernm | tee -a $LOG
dbfs_cr_tnsname_appgold_fn.ksh
#!/usr/bin/ksh
###########################################################
##### This function added entry into tnsnames.ora in #####
##### ORACLE_HOME/network/admin #####
##### Parameter : #####
##### cscan : Cluster SCAN Name #####
##### #####
###########################################################
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
if [ -n "$1" ]; then
cscan=`echo $1 | tr '[a-z]' '[A-Z]'`
echo "Cluser SCAN Nmae " $cscan | tee -a $LOG
else
echo "Missing Cluster SCAN Name parameter ... " | tee -a $LOG
exit 1
fi
TMPFILE=/tmp/dbfs_$APPNM_tns.txt
echo $TMPFILE
echo $CDATE
echo "Copying current tnsname.ora file ..." | tee -a $LOG
/usr/bin/cp $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora_$CDATE_$APPNM
echo " " > $TMPFILE
echo "dbfs_$APPNM = " >> $TMPFILE
echo " (DESCRIPTION = " >> $TMPFILE
echo " (ADDRESS = (PROTOCOL = TCP)(HOST = $cscan)(PORT = 49125)) " >> $TMPFILE
echo " (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = dbfs_$APPNM.bankofamerica.com))) " >> $TMPFILE
echo " " >> $TMPFILE
echo " " >> $TMPFILE
cat $TMPFILE | tee -a $LOG
cat $TMPFILE >> $ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/bin/tnsping dbfs_$APPNM | tee -a $LOG
dbfs_cr_mnt_pnt_parm_appgold_fn.ksh
#!/usr/bin/ksh
###########################################################
##### This function need to run as root on all nodes #####
##### creates dbfs directory at / and chown #####
##### Note: function prefix "dbfs_" to parameter #####
##### #####
###########################################################
. /oracle/admin/scripts/dbfscommon/dbfs_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
if [ -n "$1" ]; then
mntpnt=`echo $1 | tr '[A-Z]' '[a-z]'`
echo "New dbfs mount name " $mntpnt | tee -a $LOG
else
echo "Missing Mountpint Name parameter ... " | tee -a $LOG
exit 1
fi
clear
echo
echo "Create mountpoint for $APPNM ....." | tee -a $LOG
echo
dbfs_cr_mnt_pnt $mntpnt | tee -a $LOG
dbfs_cr_svc_parm_appgold_fn.ksh
#!/usr/bin/ksh
###########################################################
##### This function creates service for dbfs mount #####
##### Parameter : #####
##### cdbnm : Database Name #####
##### svcnm : Service Name #####
##### prfinst : List preferred Inst name in "," #####
##### avlinst : List available Inst name (Optional) #####
##### #####
###########################################################
. /oracle/admin/scripts/dbfscommon/dbfs_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
clear
if [ -n "$1" ]; then
cdbnm=`echo $1 | tr '[a-z]' '[A-Z]'`
echo "Database Name " $cdbnm | tee -a $LOG
else
echo "Missing Database Name parameter ... " | tee -a $LOG
exit 1
fi
if [ -n "$2" ]; then
svcnm=`echo $2 | tr '[A-Z]' '[a-z]'`
echo "Service Name " $svcnm | tee -a $LOG
else
echo "Missing Service Name parameter ... " | tee -a $LOG
exit 1
fi
if [ -n "$3" ]; then
prfinst=`echo $3 | tr '[a-z]' '[A-Z]'`
echo "List of Preferred instance(s) " $prfinst | tee -a $LOG
else
echo "Missing preferred instnace parameter ... " | tee -a $LOG
exit 1
fi
avlinst=$4
echo
echo
echo
dbfs_cr_svc $cdbnm $svcnm $prfinst $avlinst | tee -a $LOG
#!/usr/bin/ksh
###########################################################
##### This function creates tablespace and username #####
##### Parameter : #####
##### usernm : Username #####
##### tblsnm : Tablespace Name #####
##### inttsz : Initial tablespace size #####
##### toltsz : Total tablespace size #####
##### #####
###########################################################
. /oracle/admin/scripts/dbfscommon/dbfs_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
clear
if [ -n "$1" ]; then
usernm=`echo $1 | tr '[a-z]' '[A-Z]'`
echo "Username " $usernm | tee -a $LOG
else
echo "Missing Username parameter ... " | tee -a $LOG
exit 1
fi
if [ -n "$2" ]; then
inttsz=`echo $2 | tr '[a-z]' '[A-Z]'`
echo "Initial Tablespace size " $inttsz | tee -a $LOG
else
echo "Missing Initial Tablespace size parameter ... " | tee -a $LOG
exit 1
fi
if [ -n "$3" ]; then
toltsz=`echo $3 | tr '[a-z]' '[A-Z]'`
echo "Total Tablespace size " $toltsz | tee -a $LOG
else
echo "Missing Total Tablespace size parameter ... " | tee -a $LOG
exit 1
fi
echo
echo "Create tablespace and user for dbfs ....." | tee -a $LOG
echo "Script creates tablespace and user names are same"
echo
dbfs_cr_tblspusr $usernm $usernm $inttsz $toltsz | tee -a $LOG
crs_add_res_dbfs_parm_appgold_fn.ksh
#!/usr/bin/ksh
##########################################################################
##### This function adds DBFS mount to cluster resource #####
##### Parameter : #####
##### dbfsts : DBFS mount name without dbfs_ prefix #####
##### cdbnam : Database name #####
##### projscr : mount script name with full path #####
##### Note : dbfs_ appends to dbfsts (Tablespace name) parameter #####
##### #####
##########################################################################
. /oracle/admin/scripts/crsdbfs/crs_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
clear
if [ -n "$1" ]; then
dbfsts=`echo $1 | tr '[A-Z]' '[a-z]'`
echo "DBFS mount name " $dbfsts | tee -a $LOG
else
echo "Missing DBFS Mount parameter ... " | tee -a $LOG
exit 1
fi
if [ -n "$2" ]; then
cdbnam=`echo $2 | tr '[A-Z]' '[a-z]'`
echo "Database Name " $cdbnam | tee -a $LOG
else
echo "Missing Database Name parameter ... " | tee -a $LOG
exit 1
fi
if [ -n "$3" ]; then
projscr=`echo $3 | tr '[A-Z]' '[a-z]'`
echo "Mount Script Directory path " $projscr | tee -a $LOG
else
echo "Missing Mount script Directory ... " | tee -a $LOG
exit 1
fi
crs_res_stat $dbfsts | tee -a $LOG
crs_res_add_dbfs $dbfsts $cdbnam $projscr | tee -a $LOG
crs_res_stat $dbfsts | tee -a $LOG
dbfs_cr_mount_passwd_appgold.ksh
#!/usr/bin/ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
if [ -f $PROJDIR/.gg_password_$APPNM ]; then
echo
echo "Mount script password file exists validate password " | tee -a $LOG
cat $PROJDIR/.gg_password_$APPNM | tee -a $LOG
else
echo
echo "Create new password file "$PROJDIR/.gg_password_$APPNM | tee -a $LOG
echo "not4good" > $PROJDIR/.gg_password_$APPNM | tee -a $LOG
echo
fi
if [ -f /tmp/.dbfs_passwd_$APPNM ]; then
echo
echo "Temp password file exists validate password " | tee -a $LOG
cat /tmp/.dbfs_passwd_$APPNM | tee -a $LOG
else
echo
echo "Create new password file "/tmp/.dbfs_passwd_$APPNM | tee -a $LOG
echo "not4good" > /tmp/.dbfs_passwd_$APPNM | tee -a $LOG
echo
fi
xag_relo_ggtxd003_appgold_parm_fn.ksh
#!/usr/bin/ksh
###########################################################
##### This function relocate GG Instance all dbfs #####
##### mount associated with GG Instance #####
##### Parameter : #####
##### gginst : GoldenGate Instance name #####
##### ggnode : Target node to relocate #####
##### appnam : Application name #####
##### #####
##### Script checks current GG inst node and pause #####
##### for user input Y|y #####
###########################################################
. /oracle/admin/scripts/ggcommon/gg_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
clear
if [ -n "$1" ]; then
gginst=`echo $1 | tr '[A-Z]' '[a-z]'`
echo "GoldenGate Instance :" $gginst | tee -a $LOG
else
echo "Missing Goldengate Instance name ... " | tee -a $LOG
exit 1
fi
if [ -n "$2" ]; then
ggnode=`echo $2 | tr '[A-Z]' '[a-z]'`
echo "GG Relocate Target :" $ggnode | tee -a $LOG
else
echo "Missing Target node name ... " | tee -a $LOG
exit 1
fi
if [ -n "$3" ]; then
appnam=`echo $3 | tr '[A-Z]' '[a-z]'`
echo "Application Name :" $appnam | tee -a $LOG
else
echo "Missing Application name ... " | tee -a $LOG
exit 1
fi
currnode=`xag_stat $gginst | grep "is running" | awk '{print $7}'`
echo "Current GG Node :" $currnode
if [ $ggnode = $currnode ]; then
echo " "
echo " *** PLEASE CHECK TARGET AND CURRENT NODES ARE SAME *** " | tee -a $LOG
echo " "
exit 1
fi
echo "Validate Input Parameters, to continue ENTER Y"
read useresp
useresp=`echo $useresp | tr '[a-z]' '[A-Z]'`
if [ $useresp = 'Y' ]; then
echo "Continue relocate .." | tee -a $LOG
if [ $APPNM = $appnam ]; then
xag_relo_prm $gginst $ggnode | tee -a $LOG
else
echo "Please check application name and GG Instance " | tee -a $LOG
fi
else
echo "STOPPED relocating GoldenGate Instance" | tee -a $LOG
fi
xag_start_ggtxd003_appgold_fn.ksh
#!/usr/bin/ksh
###########################################################
##### This function start GG Instance and mounts #####
##### associated DBFS with GG Instance #####
##### Parameter : #####
##### gginst : GoldenGate Instance name #####
##### ggnode : Target node #####
##### appnam : Application name #####
##### #####
##### Script checks current GG inst node and pause #####
##### for user input Y|y #####
###########################################################
. /oracle/admin/scripts/ggcommon/gg_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
clear
if [ -n "$1" ]; then
gginst=`echo $1 | tr '[A-Z]' '[a-z]'`
echo "GoldenGate Instance :" $gginst | tee -a $LOG
else
echo "Missing Goldengate Instance name ... " | tee -a $LOG
exit 1
fi
if [ -n "$2" ]; then
ggnode=`echo $2 | tr '[A-Z]' '[a-z]'`
echo "GG Inst Start Node :" $ggnode | tee -a $LOG
else
echo "Missing Target node name ... " | tee -a $LOG
exit 1
fi
if [ -n "$3" ]; then
appnam=`echo $3 | tr '[A-Z]' '[a-z]'`
echo "Application Name :" $appnam | tee -a $LOG
else
echo "Missing Application name ... " | tee -a $LOG
exit 1
fi
currstat=`xag_stat $gginst | grep "is not running"`
echo "Current GG status :" $currstat
if [ -z $currstat ]; then
echo " "
echo " *** PLEASE CHECK GG Instance is running " `xag_stat $gginst` | tee -a $LOG
echo " "
exit 1
fi
echo "Validate Input Parameters, to continue ENTER Y" | tee -a $LOG
read useresp
useresp=`echo $useresp | tr '[a-z]' '[A-Z]'`
echo "User Response " $useresp | tee -a $LOG
if [ $useresp = 'Y' ]; then
echo "Continue Starting GG Instance and Mount DBFS ..." | tee -a $LOG
if [ $APPNM = $appnam ]; then
xag_start_parm $gginst $ggnode | tee -a $LOG
else
echo "Please check application name and GG Instance " | tee -a $LOG
fi
else
echo "STOPPED Starting GoldenGate Instance" | tee -a $LOG
fi
xag_stop_ggtxd003_appgold_fn.ksh
#!/usr/bin/ksh
###########################################################
##### This function stop GG Instance and unmounts #####
##### associated DBFS with GG Instance #####
##### Parameter : #####
##### gginst : GoldenGate Instance name #####
##### appnam : Application name #####
##### #####
##### Script checks current GG inst node and pause #####
##### for user input Y|y #####
###########################################################
. /oracle/admin/scripts/ggcommon/gg_common.ksh
. /oracle/admin/scripts/proj/appgold/appgold.ggini
LOGFILE=`basename $0 .ksh`
CDATE=`date '+%Y%m%d_%H%M%S'`
LOG=$LOGDIR/${LOGFILE}_${CDATE}.log
clear
if [ -n "$1" ]; then
gginst=`echo $1 | tr '[A-Z]' '[a-z]'`
echo "GoldenGate Instance :" $gginst | tee -a $LOG
else
echo "Missing Goldengate Instance name ... " | tee -a $LOG
exit 1
fi
if [ -n "$2" ]; then
appnam=`echo $2 | tr '[A-Z]' '[a-z]'`
echo "Application Name :" $appnam | tee -a $LOG
else
echo "Missing Application name ... " | tee -a $LOG
exit 1
fi
currstat=`xag_stat $gginst`
echo "Current GG status :" $currstat | tee -a $LOG
isrun=`echo $currstat | awk '{print $5}'`
if [ "$isrun" = "running" ]; then
echo " "
echo " *** GG Instance $gginst is running " `xag_stat $gginst` | tee -a $LOG
echo " "
else
echo " "
echo " Goldengate Instance $gginst is NOT running Check the GG Instance parameter " `xag_stat $gginst` | tee -a $LOG
exit 1
fi
echo "Validate Input Parameters, to continue ENTER Y" | tee -a $LOG
read useresp
useresp=`echo $useresp | tr '[a-z]' '[A-Z]'`
echo "User Response " $useresp | tee -a $LOG
if [ $useresp = 'Y' ]; then
echo "Continue Stopping GG Instance and unmount DBFS ..." | tee -a $LOG
if [ $APPNM = $appnam ]; then
xag_stop $gginst | tee -a $LOG
sleep 30
currstat=`xag_stat $gginst`
isrun=`echo $currstat | awk '{print $5}'`
echo "2nd current status " $currstat2 | tee -a $LOG
if [ "$isrun" = "not" ]; then
echo " Stop CRS Resources for " dbfs_$appnam | tee -a $LOG
echo $CRS_HOME
$CRS_HOME/bin/crsctl stop resource dbfs_$appnam | tee -a $LOG
#### echo "Unmount DBFS filesystem for APP " | tee -a $LOG
#### dbfs_unmount_parm_fs $appnam | tee -a $LOG
fi
else
echo "Please check application name and GG Instance " | tee -a $LOG
fi
else
echo "User Aborted the Stopping GG Instance" | tee -a $LOG
fi