Created
January 20, 2019 23:54
-
-
Save angoca/f3e590a1141f954573948bc5cd9dfdf9 to your computer and use it in GitHub Desktop.
Install all db2 fixpacks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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