Skip to content

Instantly share code, notes, and snippets.

@angoca
Created May 14, 2018 17:50
Show Gist options
  • Save angoca/7cec7b07dc523f3a548ade19623c08a0 to your computer and use it in GitHub Desktop.
Save angoca/7cec7b07dc523f3a548ade19623c08a0 to your computer and use it in GitHub Desktop.
Installs all Db2 fixpack an creates a different instance for each one
#!/bin/bash
# Script to install a set of different Db2 fixpack in the same machine.
# The prerequisites to install Db2 should have been resolved:
# For V11.1:
# sudo dpkg --add-architecture i386
# sudo apt-get install binutils # strings
# sudo apt-get install libaio1 # libaio.so.1
# sudo apt-get install libpam-ldap:i386 -y -q # libpam
# supo apt-get install lib32stdc++6 -y
# sudo apt-get install libstdc++6-8-dbg -y
# Specifically for V11.1 FP 1 and 1a it requires RPM:
# supo apt-get install rpm -y
# For V10.5 it requires libpam, but it needs a symbolic link:
# sudo ln -s /lib/i386-linux-gnu/libpam.so.0 /lib/libpam.so
#
# Author: Andres Gomez Casanova
# Version: 2018-05-14
BASE_DIR=/media/sf_Documents/Instaladores/db2allfp
TMP_DIR=/tmp/db2install/
GRP_ADM=db2adms
DB2_INSTALL_DIR=/opt/ibm/db2
DB_NAME=test
sudo hostname
sudo rm -Rf /tmp/db2*
clean () {
echo "Cleaning"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
rm -f ${BASE_DIR}/${DB2_VER}.log
done
}
install () {
echo "Installing all"
mkdir -p ${TMP_DIR}
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
cd ${TMP_DIR}
rm -Rf server*
echo "Unpackaging ${DB2_VER}"
tar -xf $i
if [[ "${DB2_VER}" =~ v105f[1-3].* ]] ; then
cd server
else
cd server_t
fi
echo "Prereqs ${DB2_VER}"
if [[ "${DB2_VER}" =~ v105f[1-3].* ]] ; then
./db2prereqcheck -i
else
./db2prereqcheck -i -l
fi
echo "Installing ${DB2_VER}"
if [[ "${DB2_VER}" =~ v105f[1-3].* ]] ; then
sudo ./db2_install -b ${DB2_INSTALL_DIR}/${DB2_VER} -p SERVER -n >> ${BASE_DIR}/${DB2_VER}.log
else
sudo ./db2_install -b ${DB2_INSTALL_DIR}/${DB2_VER} -p SERVER -n -y >> ${BASE_DIR}/${DB2_VER}.log
fi
echo "Finished ${DB2_VER}"
done
echo "All versions installed"
}
prepare () {
echo "Creating groups"
sudo groupadd ${GRP_ADM}
echo "Creating users"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
sudo useradd -m -g ${GRP_ADM} ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
done
echo "Environment already prepared"
}
createInsts() {
echo "Creating instances"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
sudo ${DB2_INSTALL_DIR}/${DB2_VER}/instance/db2icrt -u ${DB2_VER} ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
done
echo "All instances created"
}
createDbs () {
echo "Creating databases"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
sudo su -c ". ~/.profile ; db2start ; db2 create db ${DB_NAME} ; db2 connect to ${DB_NAME} ; db2 connect reset ; db2stop" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
done
echo "All databases created"
}
execute () {
echo "Executing in database"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
sudo su -c ". ~/.profile ; db2start" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
echo "Installing log4db2 in ${DB2_VER}"
sudo su -s /bin/bash -c ". ~/.profile ; db2 connect to ${DB_NAME} ; cd /tmp/tools/log4db2 ; . ./install ; db2 connect reset" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
echo "Installing db2unit in ${DB2_VER}"
sudo su -c ". ~/.profile ; db2 connect to ${DB_NAME} ; cd /tmp/tools/db2unit ; . ./install ; db2 connect reset" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
sudo su -c ". ~/.profile ; db2stop" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
done
echo "Execution done in databases"
}
dropDb2 () {
echo "Dropping databases"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
sudo su -c ". ~/.profile ; db2start ; db2 drop db ${DB_NAME} ; db2stop" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
done
echo "All databases dropped"
}
stopAll () {
echo "Stopping instances"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
sudo su -c ". ~/.profile ; db2 force applications all ; db2stop ; db2stop force" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
done
echo "All instances stopped"
}
dropInsts() {
echo "Droping instances"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
sudo ${DB2_INSTALL_DIR}/${DB2_VER}/instance/db2idrop ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
done
echo "All instances dropped"
}
unprepare () {
echo "Deleting users"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
sudo userdel -r ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
done
echo "Deleting groups"
sudo groupdel ${GRP_ADM}
echo "Environment reseted"
}
uninstall () {
echo "Uninstalling all"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(basename $i | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
echo ">>> ${DB2_VER}"
echo "Uninstalling ${DB2_VER}"
sudo ${DB2_INSTALL_DIR}/${DB2_VER}/install/db2_deinstall -a >> ${BASE_DIR}/${DB2_VER}.log
sudo rm -Rf ${DB2_INSTALL_DIR}/${DB2_VER}
echo "Finished ${DB2_VER}"
done
sudo rm -Rf /var/db2
echo "All versions uninstalled"
}
READ=false
clean
install
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
prepare
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
createInsts
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
createDbs
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
#execute
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
dropDb2
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
stopAll
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
dropInsts
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
unprepare
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
uninstall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment