HSTCREATE

Host common is a library of functions that will help to create, maintain, hosts involved with Oracle databases as well as other types of servers

This file should also have the

List of functions

HSTCREATE => hst_common.ksh
HSTCREATE – Library of creation scripts for creating and maintaining hosts
Linux_common.ksh should be used in this capacity to link in the necessary low-level scripts to perform

/oracle/admin/scripts/hstcreate – current production copy of the scripts
/oracle/admin/scripts/hstcreate/dev – development stuff

Using DBAdmin there are several functions that can be utilized for these purposes

hst_create.ksh –

initapex()
{

}

This function shows the banner of the script and the script name along with the arguments file
disp_banner_hst_cr ()
{
echo
echo "Host create script..........: hst_create.ksh"
echo "Host create arguments file..: hst_create.args"
echo
}


function next_menu
{
echo
echo "# ----------------------------------------------------------------------- #"
echo "[ ...  Press any key to continue ... ]"
read next
}

init_apex ()
{

# Initialize the database access to DBAdmin
# Set this up on a separate database
export BRAIN1D='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=49125))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DBADMD01)))'
export DBADM='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=49125))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DBADMD01)))'
export DBADM42='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=)(PORT=49125))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=BRAIN1D)))'

export UsrPwd='hc_core/somepassword'
export UsrPwd2='dba01/somepassword'

}

host_apex_chk ()
{
####################################################################
# prereq is init_apex function should be included
# Set the hostname then search for the host record in APEX
# once you get the DBAdmin host record in mach_id
####################################################################
# grab the hostname
hst_nm=`hostname`

# echo $hst_nm
mach_id=`${ORACLE_HOME}/bin/sqlplus -s $UsrPwd2@$BRAIN1D <<EOF
        set head off feed off pages 0 trimspool on
        select MCH_ID from dba01.machine where MCH_NM=upper('$hst_nm');
--        select MCH_ID from dba01.machine;
--        exit;
EOF`

mch_nm=`${ORACLE_HOME}/bin/sqlplus -s $UsrPwd2@$BRAIN1D <<EOF
        set head off feed off pages 0 trimspool on
        select MCH_NM from dba01.machine where MCH_NM=upper('$hst_nm');
--        exit;
EOF`

# Uncomment the next line for debugging purposes
# echo "DBAdmin record no...: "$mach_id

}


This is a directory checking function, if the directory doesn't exists it creates it

chk_gen_dir ()
{
############################################################################
# Check to see if the directory to generate the files exists
# added /scripts to the end of the gendir to check
############################################################################
if [ ! -d $gendir/scripts ] ; then
#   echo "Directory "${gendir}" does not exist"
   print "\nDirectory ${gendir}/scripts does not exist"
   print "\nDirectory ${gendir}/scripts needs to be created "
   ans=
   while [ -z $ans ]
   do
      echo -n "Create directory? ${gendir}/scripts "
      read ans
   done
   if [[ $ans =~ ^[Yy]$ ]]
   then
      print "\n...Creating directory...."
#      mkdir ${gendir}/scripts
#      mkdir ${gendir}/scripts
      print "\n...Not Creating directory in test mode...."
   else
      print "\n...Not Creating directory...."
      print "\nExiting program"
      exit
   fi
else
   print "\nDirectory ${gendir}scripts exists"
   echo
   ls ${gendir}/scripts

   ans=
   while [ -z $ans ]
   do
      echo -n "Do you wish to overwrite what is already generated? "
      read ans
   done

   if [[ $ans =~ ^[Yy]$ ]]
    then
      print "\n...Continuing..............................."
   else
      print "\n....Exiting program without creating scripts"
      exit
   fi

   ans=
   while [ -z $ans ]
   do
      echo -n "Proceed to script creation? "
      read ans
   done

   if [[ $ans =~ ^[Yy]$ ]]
    then
      print "\n............................................"
   else
      print "\n....Exiting program without creating scripts"
      exit
   fi

fi


if [ ! -d $gendir/logs ] ; then
#  echo "Directory "${gendir}/logs" does not exist"
   print "\nDirectory ${gendir}/logs does not exist"
   print "\nDirectory ${gendir}/logs needs to be created "
   ans=
   while [ -z $ans ]
   do
      echo -n "Create directory? ${gendir}/logs "
      read ans
   done
   if [[ $ans =~ ^[Yy]$ ]]
   then
      print "\n...Creating directory...."
#      mkdir ${gendir}/logs
#      mkdir ${gendir}/logs
      print "\n...Not Creating directory in test mode...."
   else
      print "\n...Not Creating directory...."
      print "\nExiting program"
      exit
   fi
else
   print "\nDirectory ${gendir}/logs exists"
   echo
   ls ${gendir}/logs

   ans=
   while [ -z $ans ]
   do
      echo -n "Do you wish to overwrite what is already generated? "
      read ans
   done

   if [[ $ans =~ ^[Yy]$ ]]
    then
      print "\n...Continuing..............................."
   else
      print "\n....Exiting program without creating scripts"
      exit
   fi

   ans=
   while [ -z $ans ]
   do
      echo -n "Proceed to script creation? "
      read ans
   done

   if [[ $ans =~ ^[Yy]$ ]]
    then
      print "\n............................................"
   else
      print "\n....Exiting program without creating scripts"
      exit
   fi

fi

pauseit
clear
}




cr_hst_crontab ()
{
############################################################################
# Create the crontab entries
############################################################################

echo "...Creating crontab file entries......."
echo > crontab_${db_assn_name}.txt
cat << EOS >> crontab_${db_assn_name}.txt
Text goes here
EOS
}


cr_sysctl ()
{
echo "...Creating sysctl.conf recommendations......."
####################################################################################################
# Create the cr_<database name>_dbca.ksh script /oracle/admin/scripts/rspfiles
####################################################################################################
# echo > cr_${host_name}_sysctl.ksh
cat << EOS > cr_${host_name}_sysctl.conf
#!/bin/ksh
############################################################################
# Script Name..:
# Description..:
# Author.......: $auth
# Date.........: $use_date
# Version......:
# Modified By..:
# Date Modified:
# Comments.....:
# Schema owner.:
#              : alter session set current should be used to change schemas
# Login User...:
# Run Order....:
# Dependent on.:
# Script type..:
############################################################################

# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 1

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 1

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.tcp_keepalive_time = 3600
kernel.panic_on_oops = 1
kernel.panic = 5
#ORACLE CONFIG
#fs.aio-max-nr = 1048576
fs.aio-max-nr = 3145728
kernel.shmmax = 17179869184
kernel.shmmni = 4096
kernel.shmall = 8388608
#kernel.sem = 250 32000 100 128
kernel.sem = 250 64000 100 256
net.core.rmem_default = 4194304
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
net.ipv4.tcp_rmem = 4194304 4194304 4194304
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.ip_local_port_range = 1024 65000
vm.swappiness = 0
vm.dirty_background_ratio = 3
vm.dirty_ratio = 15
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.hugetlb_shm_group = 0
vm.nr_hugepages = 2048
net.ipv4.ip_local_port_range = 9000 65500
fs.file-max = 6815744

EOS

# Move previous file to the correct directory
# cp cr_${db_assn_name}_dbca.ksh /oracle/admin/scripts/rspfiles

}


ck_cls ()
{

############################################################################
# This will check the cluster
############################################################################

if [[ "$database_id" = "Database Not In APEX" ]]; then
   ans=
   while [ -z $ans ]
   do
      echo
      echo -n "Add database record to APEX? "
         read ans
   done
   if [[ $ans =~ ^[Yy]$ ]]
   then
      echo
      print "\n....Adding APEX database record....."

${ORACLE_HOME}/bin/sqlplus -s $UsrPwd2@$BRAIN1D <<EOF
      insert into dba01.database
         (DB_ID,
          DB_NM,
          DB_DSCR,
          DB_CRT_DT,
          DB_UNQ_NM)
      values
         (DB_ID.NEXTVAL,
          '$db_assn_name',
          'Database added by DBAdmin ddl_create please update columns ',
          sysdate,
          '$db_assn_nm');
      commit;
EOF
      print "\n....APEX database record added....."
database_id=`${ORACLE_HOME}/bin/sqlplus -s $UsrPwd2@$BRAIN1D <<EOF
        set head off feed off pages 0 trimspool on
        select DB_ID from dba01.database where DB_NM='$db_assn_name';
        exit;
EOF`
        echo $database_id
   else
      echo
      print "\n....Continuing without adding record to APEX........."
      # exit
   fi
fi


# Check to see if the directory to generate the files exists
############################################################################
if [ ! -d $gendir ] ; then
   print "\nDirectory ${gendir} does not exist"
   print "\nDirectory ${gendir} needs to be created "
   ans=
   while [ -z $ans ]
   do
      echo -n "Create directory? ${gendir} "
      read ans
   done
   if [[ $ans =~ ^[Yy]$ ]]
   then
      print "\n...Creating directory...."
      mkdir ${gendir}
      mkdir ${gendir}/scripts
   else
      print "\n...Not Creating directory...."
      print "\nExiting program"
      exit
   fi
else
   print "\nDirectory ${gendir} exists"
   echo
   ls ${gendir}/scripts

   ans2=
   while [ -z $ans2 ]
   do
      echo -n "Do you wish to overwrite what is already generated? "
      read ans2
   done

   if [[ $ans2 =~ ^[Yy]$ ]]
    then
      print "\n...Continuing..............................."
   else
      print "\n....Exiting program without creating scripts"
      exit
   fi


   ans2=
   while [ -z $ans2 ]
   do
      echo -n "Proceed to script creation? "
      read ans2
   done

   if [[ $ans2 =~ ^[Yy]$ ]]
    then
      print "\n............................................"
   else
      print "\n....Exiting program without creating scripts"
      exit
   fi

fi

gendir=${gendir}/scripts

echo " "
echo " "


# You can bale out here for whatever reason
#########################################################################
ans=
while [ -z $ans ]
do
   echo -n "Really Proceed with script creation ? "
      read ans
done
if [[ $ans =~ ^[Yy]$ ]]
then
   print "\n....Creating scripts....."
else
   print "\n....Exiting program without creating scripts"
   exit
fi
############################################################################

############################################################################
# Create the directory /oracle/admin/<database name>/scripts
#
# Create the directory for this to all go into
# mkdir -p /oracle/admin/$db/scripts
# mkdir -p /oracle/admin/$db/scripts/logs
# cd /oracle/admin/scripts/mrc/ddltest/$appabrl
# /oracle/admin/scripts/mrc/ddltest/testddlcr
############################################################################

print "\n.....Changing to directory ${gendir} "
cd ${gendir}
}



cr_tmplt ()
{
echo "...Creating template file......."
# Create the
############################################################################
echo > template.ksh
cat << EOS >> template.ksh

EOS
}

function next_menu
{
echo
echo "# ----------------------------------------------------------------------- #"
echo "[ ...  Press any key to continue ... ]"
read next
}