Skip to content

Instantly share code, notes, and snippets.

@angoca
Created January 20, 2019 23:54
Show Gist options
  • Save angoca/f3e590a1141f954573948bc5cd9dfdf9 to your computer and use it in GitHub Desktop.
Save angoca/f3e590a1141f954573948bc5cd9dfdf9 to your computer and use it in GitHub Desktop.
Install all db2 fixpacks
#!/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-06-12
BASE_DIR=/media/sf_Documents/Instaladores/db2allfp
TMP_DIR=/tmp/db2install/
GRP_ADM=db2adms
DB2_INSTALL_DIR=/opt/ibm/db2
DB_NAME=test
export READ=false
sudo true
sudo rm -Rf /tmp/db2*
db2ver () {
NAME=$1
VER=$(basename ${NAME} | cut -d '_' -f 1 | sed 's/\.//g' | sed 's/p//')
# Gets last character.
LAST="${VER: -1}"
if [[ "${LAST}" =~ [a-z] ]] ; then
VER=$(echo ${VER} | sed "s/${LAST}//")
VER=$(echo ${VER} | sed "s/f/${LAST}/")
fi
echo ">>> ${VER}" >&2
# Returns version.
echo $VER
}
pauseContinue () {
if [ "${READ}" = true ] ; then
read -p "Enter para continuar"
fi
}
clean () {
echo "Cleaning"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
rm -f ${BASE_DIR}/${DB2_VER}.log
done
}
install () {
echo "Installing all"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
rm -Rf ${TMP_DIR}
mkdir -p ${TMP_DIR}
cd ${TMP_DIR}
echo "Unpackaging ${DB2_VER}"
tar -xf $i >> ${BASE_DIR}/${DB2_VER}.log
if [ $(ls -1) == "devinst" ] ; then
cd */*/*/*
fi
cd *
pwd >> ${BASE_DIR}/${DB2_VER}.log
echo "Prereqs ${DB2_VER}"
if [[ "${DB2_VER}" =~ v105[af][1-3] ]] ; then
./db2prereqcheck -i
else
./db2prereqcheck -i -l
fi
echo "Installing ${DB2_VER}"
if [[ "${DB2_VER}" =~ v105[af][1-9] ]] ; 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"
if [ "$(grep ${GRP_ADM} /etc/group)" == "" ] ; then
sudo groupadd ${GRP_ADM}
else
echo "Group ${GRP_ADM} already exists"
fi
echo "Creating users"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
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=$(db2ver $i)
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=$(db2ver $i)
(
sudo su -c ". ~/.profile ; db2start ; db2 create db ${DB_NAME} ; db2 connect to ${DB_NAME} ; db2 grant dbadm, dataaccess, accessctrl on database to group ${GRP_ADM} ; db2 connect reset ; db2stop" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
)
done
echo "All databases created"
}
javaVersion () {
echo "Getting java version JDBC"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
(
java -cp /home/${DB2_VER}/sqllib/java/db2jcc.jar com.ibm.db2.jcc.DB2Jcc -version
)
done
echo "Execution done in databases for JDBC version"
}
javaVersion4 () {
echo "Getting java version JDBC4"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
(
java -cp /home/${DB2_VER}/sqllib/java/db2jcc4.jar com.ibm.db2.jcc.DB2Jcc -version
)
done
echo "Execution done in databases for JDBC4 version"
}
instancePort () {
echo "Getting instance port"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
(
grep "DB2_${DB2_VER}\W" /etc/services
sudo su -c "db2 update dbm cfg using SVCENAME DB2_${DB2_VER}" - ${DB2_VER}
sudo su -c "db2set DB2COMM=TCPIP" - ${DB2_VER}
sudo su -c "db2 get dbm cfg | awk '/\(SVCENAME\)/ {print}'" - ${DB2_VER}
sudo su -c "db2set -all" - ${DB2_VER}
)
done
echo "Execution done in getting instance port"
}
db2Version () {
echo "Getting Db2 version"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
(
. /home/${DB2_VER}/sqllib/db2profile
db2level >> ${BASE_DIR}/${DB2_VER}.log
db2start >> ${BASE_DIR}/${DB2_VER}.log
db2 connect to ${DB_NAME} >> ${BASE_DIR}/${DB2_VER}.log
db2 -x "SELECT varchar(INST_NAME,12) as INST_NAME, varchar(RELEASE_NUM,12) as RELEASE_NUM, varchar(SERVICE_LEVEL,16) as SERVICE_LEVEL, varchar(BLD_LEVEL,16) as BLD_LEVEL, varchar(PTF,25) as ptf, FIXPACK_NUM FROM SYSIBMADM.ENV_INST_INFO"
db2 "SELECT varchar(INST_NAME,12) as INST_NAME, varchar(RELEASE_NUM,12) as RELEASE_NUM, varchar(SERVICE_LEVEL,16) as SERVICE_LEVEL, varchar(BLD_LEVEL,16) as BLD_LEVEL, varchar(PTF,25) as ptf, FIXPACK_NUM FROM SYSIBMADM.ENV_INST_INFO" >> ${BASE_DIR}/${DB2_VER}.log
db2 terminate >> ${BASE_DIR}/${DB2_VER}.log
db2stop >> ${BASE_DIR}/${DB2_VER}.log
)
done
echo "Execution done in databases for getting Db2 version"
}
execute () {
echo "Executing in database"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
(
sudo su -c ". ~/.profile ; db2start" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
# echo "Installing log4db2 in ${DB2_VER}"
# sudo su -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 "java -cp /home/${DB2_VER}/sqllib/java/db2jcc.jar:/tmp Jcctest localhost \$(awk '/DB2_${DB2_VER}\\W/ {print \$2}' /etc/services | awk -F\/ '{print \$1}') test angoca a" - ${DB2_VER}
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=$(db2ver $i)
(
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=$(db2ver $i)
(
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=$(db2ver $i)
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=$(db2ver $i)
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=$(db2ver $i)
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"
}
db2unit-dev () {
echo "Installing db2unit from Maven"
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
(
. /home/${DB2_VER}/sqllib/db2profile
db2 terminate
db2start
cd /media/sf_Documents/Github/db2unit
db2level
mvn compile >> ${BASE_DIR}/${DB2_VER}.log
db2stop
)
done
echo "All db2unit created"
}
db2unit-rel () {
echo "Installing db2unit from release"
cd /media/sf_Documents/Github/db2unit
mvn assembly:single
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
(
(
. /home/${DB2_VER}/sqllib/db2profile
db2start
) >> ${BASE_DIR}/${DB2_VER}.log
echo "Installing log4db2 in ${DB2_VER}"
sudo su -c ". ~/.profile ; db2 connect to ${DB_NAME} ; cd /tmp/tools/log4db2 ; . ./install ; db2 connect reset" - ${DB2_VER} >> ${BASE_DIR}/${DB2_VER}.log
# (
# . /home/${DB2_VER}/sqllib/db2profile
# db2 connect to ${DB_NAME}
# cd /tmp/tools/log4db2
# . ./install ; db2 connect reset
# ) >> ${BASE_DIR}/${DB2_VER}.log
echo "Installing db2unit in ${DB2_VER}"
(
. /home/${DB2_VER}/sqllib/db2profile
db2 connect to ${DB_NAME}
cd /media/sf_Documents/Github/db2unit/target/db2unit/db2unit
. ./install ; db2 connect reset
) >> ${BASE_DIR}/${DB2_VER}.log
(
. /home/${DB2_VER}/sqllib/db2profile
db2stop
) >> ${BASE_DIR}/${DB2_VER}.log
)
done
echo "Execution done in databases"
}
db2unit-uni () {
echo "Uninstalling db2unit"
cd /media/sf_Documents/Github/db2unit
mvn assembly:single
for i in $(ls -1 ${BASE_DIR}/*.tar.gz) ; do
DB2_VER=$(db2ver $i)
(
(
. /home/${DB2_VER}/sqllib/db2profile
db2start
) >> ${BASE_DIR}/${DB2_VER}.log
echo "Uninstalling db2unit in ${DB2_VER}"
(
. /home/${DB2_VER}/sqllib/db2profile
db2 connect to ${DB_NAME}
cd /media/sf_Documents/Github/db2unit/target/db2unit/db2unit
. ./uninstall ; db2 connect reset
) >> ${BASE_DIR}/${DB2_VER}.log
echo "Uninstalling log4db2 in ${DB2_VER}"
(
. /home/${DB2_VER}/sqllib/db2profile
db2 connect to ${DB_NAME}
cd /tmp/tools/log4db2
. ./uninstall ; db2 connect reset
) >> ${BASE_DIR}/${DB2_VER}.log
(
. /home/${DB2_VER}/sqllib/db2profile
db2stop
) >> ${BASE_DIR}/${DB2_VER}.log
)
done
echo "Execution done in databases"
}
# Execution control
clean
#install
#prepare
#createInsts
#createDbs
#javaVersion
#javaVersion4
#instancePort
#db2Version
execute
#db2unit-dev
#db2unit-uni
#db2unit-rel
#dropDb2
#stopAll
#dropInsts
#unprepare
#uninstall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment