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 –
[code language=”sql”]
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
}
[/code]