#!/bin/sh
###############################################################################################################
#Script name: riskCheck.sh
#Script description: riskCheck for db2.
#Current Release Version: 1.0
#Script Owner: He, Haibo
#Latest editor: He, Haibo
#Support platform: RHEL 5-7 && DB2 9.5/9.7/10.1/10.5/11.1
#Change log:
#Date 2021-4-12
#
#
###############################################################################################################
#export LANG=en_US.UTF-8
export LANG=zh_CN.UTF-8
osbox=`uname`;
HOSTNAME=$(hostname)
INSTNAME=`ps -ef|grep db2sysc|grep -v grep |awk '{print $1}'|head -1`
SYSIP=`sed '/^#/d' /yunwei/sysShell/cfg/pub/entegor.cfg 2>/dev/null | sed '/^[[:space:]]*$/d'|awk -F '|' '{print $3}' | grep -v "^$"| grep -E "^[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}" | head -1`
IPvalid=$(echo $SYSIP | grep -E "^[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}" | wc -l)
if [[ $IPvalid -eq 0 ]];then
SYSIP=$(grep -iw $(hostname) /etc/hosts | awk '{print $1}' | grep -E "^[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}" | grep -v "127.0.0.1" | head -1)
fi
db2checklog=db2_`hostname`_${SYSIP}_$(date +%y%m%d).out
RHversion=$(cat /proc/version | sed 's/[^0-9]//g' | cut -b -3)
##RHEL5=261;RHEL6=263;RHEL7=310
#DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
#DATE_N=`date "+%Y-%m-%d" `
DATE_M=$(date '+%Y-%m-%d')
DATE_N=$(date '+%Y-%m-%d %H:%M:%S'.000000)
getOSArchitecture(){
if [[ "$osbox" == "Linux" ]];then
continue
else
echo "Current OS is $osbox"
echo 1
exit 1
fi
}
createCheckDir(){
if [[ ! -d /yunwei/Release/recoverycheck ]];then
mkdir -p /yunwei/Release/recoverycheck
chmod 767 /yunwei/Release/recoverycheck
current_date="/yunwei/Release/recoverycheck"
db2checklog=$current_date/db2_riskCheck.csv
else
current_date="/yunwei/Release/recoverycheck"
db2checklog=$current_date/db2_riskCheck.csv
fi
}
getIndirectDBnames(){
if [[ "$osbox" == "Linux" ]];then
dblist=`su - $1 -c "db2 list db directory | grep -B5 Indirect | grep 'Database name'" | grep -v 'YOU HAVE NEW MAIL' | awk '{print $4}' | uniq`
fi
}
getInstance(){
if [[ "$INSTNAME" == "" ]];then
echo 1
exit 1
else
continue
fi
}
sendFile(){
[ -f /yunwei/sysShell/tools/bin/sendfile.sh ] && sh /yunwei/sysShell/tools/bin/sendfile.sh put 21.244.88.129 $current_date ./ $db2checklog xtglftp ftp || echo "/yunwei/sysShell/tools/bin/sendfile.sh not installed, can't send file to 88.129."
}
getSystemMemory(){
_hostname=`hostname`
_cpu_phy=`grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l`
_cpu_logical=`cat /proc/cpuinfo | grep ^processor|wc -l`
_mem=`free -m|grep Mem:|awk '{print $2}'|xargs`
_memory=`awk 'BEGIN{printf"%.2f/n",'$_mem/1024'}'`
_memory=`echo $_memory|awk '{print int($0)}'`
mem_list="8 16 32 64 128 256 512"
diff1_abs=10
for i in $mem_list
do
diff2=$[$i-$_memory]
if [[ diff1_abs -gt ${diff2#-} ]];then
diff1=$diff2
diff1_abs=${diff2#-}
fi
done
_memory=$[$_memory+$diff1]
Mem="$_memory"
Mem1=`echo "scale=0;$Mem/2"|bc`
_Swap1=`free -m|grep Swap:|awk '{print $2}'|xargs`
_Swap=`awk 'BEGIN{printf"%.2f/n",'$_Swap1/1024'}'`
_Swap=`echo $_Swap|awk '{print int($0)}'`
swap_list="8 16 32 64 128 256 512"
diff1_abs1=10
for i in $swap_list
do
diff21=$[$i-$_Swap]
if [[ diff1_abs1 -gt ${diff21#-} ]];then
diff1=$diff21
diff1_abs1=${diff21#-}
fi
done
_Swap=$[$_Swap+$diff1]
Swap="$_Swap"
# echo "Current Memory:$Mem" >> $db2checklog
}
getEtcSysctlConf(){
shmall=`cat /etc/sysctl.conf | grep kernel.shmall | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
_shmall=`echo "$Mem*1024*1024/4*2"|bc`
if [[ $shmall == $_shmall ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.shmall | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.shmall | db2_os | | | | | 1" >> $db2checklog
fi
shmmax=`cat /etc/sysctl.conf | grep kernel.shmmax | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
_shmmax=`echo "$Mem*1024*1024*1024"|bc`
if [[ $shmmax == $_shmmax ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.shmmax | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.shmmax | db2_os | | | | | 1" >> $db2checklog
fi
shmmni=`cat /etc/sysctl.conf | grep kernel.shmmni | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
_shmmni=`echo "$Mem*256"|bc`
if [[ $_shmmni -gt 16384 ]];then
continue
else
_shmmni=16384
fi
if [[ $shmmni == $_shmmni ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.shmmni | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.shmmni | db2_os | | | | | 1" >> $db2checklog
fi
msgmax=`cat /etc/sysctl.conf | grep kernel.msgmax | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
if [[ $msgmax == 192000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.msgmax | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.msgmax | db2_os | | | | | 1" >> $db2checklog
fi
msgmnb=`cat /etc/sysctl.conf | grep kernel.msgmnb | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
if [[ $msgmnb == 192000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.msgmnb | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.msgmnb | db2_os | | | | | 1" >> $db2checklog
fi
msgmni=`cat /etc/sysctl.conf | grep kernel.msgmni | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
_msgmni=`echo "$Mem*1024"|bc`
if [[ "$_msgmni" -gt "65536" ]];then
continue
else
_msgmni=65536
fi
if [[ $msgmni == $_msgmni ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.msgmni | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.msgmni | db2_os | | | | | 1" >> $db2checklog
fi
sem1=`cat /etc/sysctl.conf | grep -i kernel.sem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $1'}`
sem2=`cat /etc/sysctl.conf | grep -i kernel.sem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $2'}`
sem3=`cat /etc/sysctl.conf | grep -i kernel.sem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $3'}`
sem4=`cat /etc/sysctl.conf | grep -i kernel.sem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $4'}`
_sem4=`echo "$Mem*256"|bc`
if [[ "$sem1" == 250 && "$sem2" == 256000 && "$sem3" == 32 && "$sem4" == "$_sem4" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.sem | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.sem | db2_os | | | | | 1" >> $db2checklog
fi
randomize_va_space=`cat /etc/sysctl.conf | grep kernel.randomize_va_space | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
if [[ "$randomize_va_space" == 0 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.randomize_va_space | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | kernel.randomize_va_space | db2_os | | | | | 1" >> $db2checklog
fi
overcommit_memory=`cat /etc/sysctl.conf | grep vm.overcommit_memory | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
if [[ "$overcommit_memory" == 0 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | vm.overcommit_memory | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | vm.overcommit_memory | db2_os | | | | | 1" >> $db2checklog
fi
if [[ "$ARCHITECTURE" == "HADR" ]];then
rmem_max=`cat /etc/sysctl.conf | grep net.core.rmem_max | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
if [[ "$rmem_max" == 4096000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.core.rmem_max | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.core.rmem_max | db2_os | | | | | 1" >> $db2checklog
fi
wmem_max=`cat /etc/sysctl.conf | grep net.core.wmem_max | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F '=' {'print $2'} | tail -1 | sed 's/[ /t]//g'`
if [[ "$wmem_max" == 4096000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.core.wmem_max | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.core.wmem_max | db2_os | | | | | 1" >> $db2checklog
fi
tcp_rmem1=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_rmem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $1'}`
tcp_rmem2=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_rmem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $2'}`
tcp_rmem3=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_rmem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $3'}`
if [[ "$tcp_rmem1" == 4096 && "$tcp_rmem2" == 16384 && "$tcp_rmem3" == 4096000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_rmem | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_rmem | db2_os | | | | | 1" >> $db2checklog
fi
tcp_wmem1=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_wmem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $1'}`
tcp_wmem2=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_wmem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $2'}`
tcp_wmem3=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_wmem | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $3'}`
if [[ "$tcp_wmem1" == 4096 && "$tcp_wmem2" == 16384 && "$tcp_wmem3" == 4096000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_wmem1 | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_wmem1 | db2_os | | | | | 1" >> $db2checklog
fi
tcp_keepalive_intvl=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_keepalive_intvl | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $1'}`
if [[ "$tcp_keepalive_intvl" == 10 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_keepalive_intvl | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_keepalive_intvl | db2_os | | | | | l" >> $db2checklog
fi
tcp_keepalive_probes=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_keepalive_probes | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $1'}`
if [[ "$tcp_keepalive_probes" == 3 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_keepalive_probes | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_keepalive_probes | db2_os | | | | | 1" >> $db2checklog
fi
tcp_keepalive_time=`cat /etc/sysctl.conf | grep -i net.ipv4.tcp_keepalive_time | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | tail -1 | awk -F '=' {'print $2'} | awk -F ' ' {'print $1'}`
if [[ "$tcp_keepalive_time" == 30 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_keepalive_time | db2_os | | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | net.ipv4.tcp_keepalive_time | db2_os | | | | | 1" >> $db2checklog
fi
fi
}
getEtcSecurityLimits(){
nproc_soft=`cat /etc/security/limits.conf | grep -w $1 | grep -i nproc | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$nproc_soft" == 10240 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nproc_soft | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nproc_soft | db2_os | $inst | | | | 1" >> $db2checklog
fi
nproc_hard=`cat /etc/security/limits.conf | grep -w $1 | grep -i nproc | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$nproc_hard" == 10240 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nproc_hard | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nproc_hard | db2_os | $inst | | | | 1" >> $db2checklog
fi
nofile_soft=`cat /etc/security/limits.conf | grep -w $1 | grep -i nofile | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$nofile_soft" == 60000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nofile_soft | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nofile_soft | db2_os | $inst | | | | 1" >> $db2checklog
fi
nofile_hard=`cat /etc/security/limits.conf | grep -w $1 | grep -i nofile | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$nofile_hard" == 60000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nofile_hard | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nofile_hard | db2_os | $inst | | | | 1" >> $db2checklog
fi
stack_hard=`cat /etc/security/limits.conf | grep -w $1 | grep -i stack | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$stack_hard" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | stack_hard | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | stack_hard | db2_os | $inst | | | | 1" >> $db2checklog
fi
stack_soft=`cat /etc/security/limits.conf | grep -w $1 | grep -i stack | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$stack_soft" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | stack_soft | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | stack_soft | db2_os | $inst | | | | 1" >> $db2checklog
fi
data_hard=`cat /etc/security/limits.conf | grep -w $1 | grep -i data | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$data_hard" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | data_hard | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | data_hard | db2_os | $inst | | | | 1" >> $db2checklog
fi
data_soft=`cat /etc/security/limits.conf | grep -w $1 | grep -i data | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$data_soft" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | data_soft | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | data_soft | db2_os | $inst | | | | 1" >> $db2checklog
fi
fsize_hard=`cat /etc/security/limits.conf | grep -w $1 | grep -i fsize | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$fsize_hard" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | fsize_hard | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | fsize_hard | db2_os | $inst | | | | 1" >> $db2checklog
fi
fsize_soft=`cat /etc/security/limits.conf | grep -w $1 | grep -i fsize | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$fsize_soft" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | fsize_soft | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | fsize_soft | db2_os | $inst | | | | 1" >> $db2checklog
fi
rss_hard=`cat /etc/security/limits.conf | grep -w $1 | grep -i rss | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$rss_hard" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | rss_hard | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | rss_hard | db2_os | $inst | | | | 1" >> $db2checklog
fi
rss_soft=`cat /etc/security/limits.conf | grep -w $1 | grep -i rss | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$rss_soft" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | rss_soft | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | rss_soft | db2_os | $inst | | | | 1" >> $db2checklog
fi
instancepath=`cat /etc/passwd | grep -i $1 | awk -F ':' {'print $6'}`
if [[ -f "$instancepath/sqllib/adm/.fenced" ]];then
db2fenceName=`ls -l $instancepath/sqllib/adm/.fenced | awk -F ' ' {'print $3'}`
nproc_soft_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i nproc | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$nproc_soft_fence" == 10240 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nproc_soft | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nproc_soft | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
nproc_hard_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i nproc | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$nproc_hard_fence" == 10240 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nproc_hard | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nproc_hard | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
nofile_soft_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i nofile | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$nofile_soft_fence" == 60000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nofile_soft | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nofile_soft | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
nofile_hard_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i nofile | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$nofile_hard_fence" == 60000 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nofile_hard | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | nofile_hard | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
stack_hard_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i stack | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$stack_hard_fence" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | stack_hard | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | stack_hard | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
stack_soft_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i stack | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$stack_soft_fence" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | stack_soft | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | stack_soft | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
data_hard_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i data | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$data_hard_fence" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | data_hard | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | data_hard | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
data_soft_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i data | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$data_soft_fence" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | data_soft | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | data_soft | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
fsize_hard_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i fsize | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$fsize_hard_fence" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | fsize_hard | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | fsize_hard | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
fsize_soft_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i fsize | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$fsize_soft_fence" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | fsize_soft | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | fsize_soft | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
rss_hard_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i rss | grep hard | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$rss_hard_fence" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | rss_hard | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | rss_hard | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
rss_soft_fence=`cat /etc/security/limits.conf | grep -w $db2fenceName | grep -i rss | grep soft | grep -v "^[[:space:]]*#" | sed 's/[[:space:]][[:space:]]*/ /g' | grep -v "^[[:space:]]*$" | awk -F ' ' {'print $4'} | tail -1`
if [[ "$rss_soft_fence" == -1 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | rss_soft | db2_os | $db2fenceName | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | rss_soft | db2_os | $db2fenceName | | | | 1" >> $db2checklog
fi
else
echo "There is no .fenced file in Current instance."
fi
}
getDb2diag(){
if [[ "$ARCHITECTURE" == "HADR" || "$ARCHITECTURE" == "STANDARD" ]];then
if [[ $DB2LEVEL == 11.1* || $DB2LEVEL == 10.5* || $DB2LEVEL == 10.1* ]];then
DB2DIAGPATH=`su - $1 -c 'db2 get dbm cfg | grep -iw "Current member resolved DIAGPATH"' | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
db2DiagSize=`du -sm $DB2DIAGPATH/db2diag.log | awk -F ' ' {'print $1'} | sed 's/[ /t]//g'`
if [[ $db2DiagSize -lt 100 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | db2diag.log | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | db2diag.log | | $inst | | | | 1" >> $db2checklog
fi
elif [[ $DB2LEVEL == 9.7* || $DB2LEVEL == 9.5* || $DB2LEVEL == 9.1* ]];then
DB2DIAGPATH=`su - $1 -c "db2 get dbm cfg | grep -iw diagpath" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
db2DiagSize=`du -sm $DB2DIAGPATH/db2diag.log | awk -F ' ' {'print $1'} | sed 's/[ /t]//g'`
if [[ $db2DiagSize -lt 100 ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | db2diag.log | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | db2diag.log | | $inst | | | | 1" >> $db2checklog
fi
else
echo "Current Db2 Version Does not Support." >> $db2checklog
fi
fi
}
getSevenRunstats(){
su - $1 -c "db2pd -db $2 -memset | grep -v 'date' | grep -i $2" > $current_date/tmp_"$2"_result.out
if [[ -f "$current_date/tmp_$2_result.out" ]];then
if [ `cat $current_date/tmp_"$2"_result.out | grep 'not activated' | wc -l` -gt 0 ];then
continue
else
if [[ $hadr_role == PRIMARY || $hadr_role == STANDARD ]];then
instgroup=`id $1 | awk {'print $2'} | awk -F '=' {'print $2'} | awk -F '(' {'print $2'} | awk -F ')' {'print $1'}`
if [[ ! -f "$current_date/db2HistoryFilePath_tmp.file" ]];then
touch $current_date/db2HistoryFilePath_tmp.file
fi
chown $1:$instgroup $current_date/db2HistoryFilePath_tmp.file
chmod u+x $current_date/db2HistoryFilePath_tmp.file
echo "db2 -x /"connect to $2/" > /dev/null" > $current_date/db2HistoryFilePath_tmp.file
echo "db2 -x /"select varchar(tabname,40) as tabname from syscat.tables tab,syscat.tablespaces sp where tab.TBSPACEID=sp.tbspaceid and tab.tabschema not like 'SYS%' and tabname not like 'EXPLAIN%' and tabname not like 'ADVISE%' and STATS_TIME < timestamp (current timestamp-8 days) order by card desc/"" >> $current_date/db2HistoryFilePath_tmp.file
echo "db2 terminate > /dev/null" >> $current_date/db2HistoryFilePath_tmp.file
# tabName=`db2 -x "select varchar(tabname,40) as tabname from syscat.tables tab,syscat.tablespaces sp where tab.TBSPACEID=sp.tbspaceid and tab.tabschema not like 'SYS%' and STATS_TIME < timestamp (current timestamp-8 days) order by card desc"`
su - $1 -c "$current_date/db2HistoryFilePath_tmp.file" > $current_date/${inst}_${dbname}.out
for tabname in `cat $current_date/${inst}_${dbname}.out`;do
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | tabname | | $inst | $dbname | | | $tabname" >> $db2checklog
done
elif [[ $hadr_role == STANDBY ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | tabname | | $inst | $dbname | | | standby_database" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | tabname | | $inst | $dbname | | | standby_database" >> $db2checklog
fi
fi
fi
}
getDbmcfg(){
DFT_MON_BUFPOOL=`su - $1 -c "db2 get dbm cfg" | grep -i DFT_MON_BUFPOOL | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$DFT_MON_BUFPOOL" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_BUFPOOL | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_BUFPOOL | | $inst | | | | 1" >> $db2checklog
fi
DFT_MON_LOCK=`su - $1 -c "db2 get dbm cfg" | grep -i DFT_MON_LOCK | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$DFT_MON_LOCK" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_LOCK | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_LOCK | | $inst | | | | 1" >> $db2checklog
fi
DFT_MON_SORT=`su - $1 -c "db2 get dbm cfg" | grep -i DFT_MON_SORT | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$DFT_MON_SORT" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_SORT | | $inst| | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_SORT | | $inst| | | | 1" >> $db2checklog
fi
DFT_MON_STMT=`su - $1 -c "db2 get dbm cfg" | grep -i DFT_MON_STMT | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$DFT_MON_STMT" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_STMT | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_STMT | | $inst | | | | 1" >> $db2checklog
fi
DFT_MON_TABLE=`su - $1 -c "db2 get dbm cfg" | grep -i DFT_MON_TABLE | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$DFT_MON_TABLE" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_TABLE | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_TABLE | | $inst | | | | 1" >> $db2checklog
fi
DFT_MON_TIMESTAMP=`su - $1 -c "db2 get dbm cfg" | grep -i DFT_MON_TIMESTAMP | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$DFT_MON_TIMESTAMP" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_TIMESTAMP | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_TIMESTAMP | | $inst | | | | 1" >> $db2checklog
fi
DFT_MON_UOW=`su - $1 -c "db2 get dbm cfg" | grep -i DFT_MON_UOW | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$DFT_MON_UOW" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_UOW | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DFT_MON_UOW | | $inst | | | | 1" >> $db2checklog
fi
HEALTH_MON=`su - $1 -c "db2 get dbm cfg" | grep -i HEALTH_MON | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ $HEALTH_MON == "OFF" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | HEALTH_MON | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | HEALTH_MON | | $inst | | | | 1" >> $db2checklog
fi
ASLHEAPSZ=`su - $1 -c "db2 get dbm cfg" | grep -i ASLHEAPSZ | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$ASLHEAPSZ" == "128" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | ASLHEAPSZ | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | ASLHEAPSZ | | $inst | | | | 1" >> $db2checklog
fi
if [[ $ARCHITECTURE -eq "DPF" ]];then
FCM_NUM_BUFFERS=`su - $1 -c "db2 get dbm cfg" | grep -i FCM_NUM_BUFFERS | awk -F '=' {'print $2'} | sed 's/[ /t]//g' | awk -F '(' {'print $1'}`
if [[ "$FCM_NUM_BUFFERS" == "AUTOMATIC" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | FCM_NUM_BUFFERS | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | FCM_NUM_BUFFERS | | $inst | | | | 1" >> $db2checklog
fi
fi
INTRA_PARALLEL=`su - $1 -c "db2 get dbm cfg" | grep -i INTRA_PARALLEL | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | INTRA_PARALLEL | | $inst | | | | $INTRA_PARALLEL" >> $db2checklog
id appmon > /dev/null
if [[ $? -eq 0 ]];then
MONGROUP=`id appmon | awk -F ' ' {'print $2'} | awk -F '(' {'print $2'} | awk -F ')' {'print $1'}`
_MONGROUP=$(echo $MONGROUP|tr '[a-z]' '[A-Z]')
DBMMONGROUP=`su - $1 -c "db2 get dbm cfg" | grep -i SYSMON_GROUP | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ $DBMMONGROUP == $_MONGROUP ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | MONGROUP | db2_os | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | MONGROUP | db2_os | $inst | | | | 1" >> $db2checklog
fi
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | MONGROUP | db2_os | $inst | | | | -1" >> $db2checklog
fi
}
getDPF(){
instancepath=`cat /etc/passwd | grep -i $1 | awk -F ':' {'print $6'}`
ARCHITECTURE=`cat "$instancepath"/sqllib/db2nodes.cfg | awk '{if(NF > 3) print "Purescale"; else if(NR > 1) print "DPF"; else print "Alone"}' | tail -1`
}
getDBArchitecture(){
instancepath=`cat /etc/passwd | grep -i $1 | awk -F ':' {'print $6'}`
# echo "instancepath is $instancepath"
ARCHITECTURE=`cat "$instancepath"/sqllib/db2nodes.cfg | awk '{if(NF > 3) print "Purescale"; else if(NR > 1) print "DPF"; else print "Alone"}' | tail -1`
if [[ "$ARCHITECTURE" == "Alone" ]];then
#cause HADR only in "Alone" architecture
hadr_role=`su - $1 -c "db2 get db cfg for $2 | grep -i role" | awk '{print $5}'`
if [[ "$hadr_role" == "PRIMARY" || "$hadr_role" == "STANDBY" ]];then
ARCHITECTURE="HADR"
else
ARCHITECTURE="STANDARD"
fi
else
ARCHITECTURE="DPF"
fi
}
getDb2Level(){
DB2LEVEL=`su - $1 -c "db2level" |grep tokens|awk -F'"' '{print $2}'|awk -F'v' '{print $2}'`
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2LEVEL | | $inst | | | | $DB2LEVEL" > $db2checklog
}
getDb2set(){
DB2COMM=`su - $1 -c "db2set" | grep -i DB2COMM | awk -F '=' {'print $2'}`
if [[ "$DB2COMM" == "TCPIP" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2COMM | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2COMM | | $inst | | | | 1" >> $db2checklog
fi
DB2CODEPAGE=`su - $1 -c "db2set" | grep -i DB2CODEPAGE | awk -F '=' {'print $2'}`
if [[ "$DB2CODEPAGE" == "1208" || "$DB2CODEPAGE" == "1386" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2CODEPAGE | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2CODEPAGE | | $inst | | | | 1" >> $db2checklog
fi
DB2_FMP_COMM_HEAPSZ=`su - $1 -c "db2set" | grep -i DB2_FMP_COMM_HEAPSZ | awk -F '=' {'print $2'}`
if [[ "$DB2_FMP_COMM_HEAPSZ" == "780000" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_FMP_COMM_HEAPSZ | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_FMP_COMM_HEAPSZ | | $inst | | | | 1" >> $db2checklog
fi
DB2_LOAD_COPY_NO_OVERRIDE=`su - $1 -c "db2set" | grep -i DB2_LOAD_COPY_NO_OVERRIDE | awk -F '=' {'print $2'}`
if [[ "$DB2_LOAD_COPY_NO_OVERRIDE" == "NONRECOVERABLE" || "$DB2_LOAD_COPY_NO_OVERRIDE" == "nonrecoverable" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_LOAD_COPY_NO_OVERRIDE | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_LOAD_COPY_NO_OVERRIDE | | $inst | | | | 1" >> $db2checklog
fi
DB2_ANTIJOIN=`su - $1 -c "db2set" | grep -i DB2_ANTIJOIN | awk -F '=' {'print $2'}`
if [[ "$DB2_ANTIJOIN" == "EXTEND" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_ANTIJOIN | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_ANTIJOIN | | $inst | | | | 1" >> $db2checklog
fi
DB2_MEM_TUNING_RANGE=`su - $1 -c "db2set" | grep -i DB2_MEM_TUNING_RANGE | awk -F '=' {'print $2'}`
if [[ "$DB2_MEM_TUNING_RANGE" == "10,80" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_MEM_TUNING_RANGE | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_MEM_TUNING_RANGE | | $inst | | | | 1" >> $db2checklog
fi
DB2_HADR_SORCVBUF=`su - $1 -c "db2set" | grep -i DB2_HADR_SORCVBUF | awk -F '=' {'print $2'}`
if [[ "$DB2_HADR_SORCVBUF" == "4000000" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_HADR_SORCVBUF | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_HADR_SORCVBUF | | $inst | | | | 1" >> $db2checklog
fi
DB2_HADR_SOSNDBUF=`su - $1 -c "db2set" | grep -i DB2_HADR_SOSNDBUF | awk -F '=' {'print $2'}`
if [[ "$DB2_HADR_SOSNDBUF" == "4000000" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_HADR_SOSNDBUF | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_HADR_SOSNDBUF | | $inst | | | | 1" >> $db2checklog
fi
DB2_HADR_PEER_WAIT_LIMIT=`su - $1 -c "db2set" | grep -i DB2_HADR_PEER_WAIT_LIMIT | awk -F '=' {'print $2'}`
if [[ "$DB2_HADR_PEER_WAIT_LIMIT" == "1" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_HADR_PEER_WAIT_LIMIT | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_HADR_PEER_WAIT_LIMIT | | $inst | | | | 1" >> $db2checklog
fi
DB2_HADR_BUF_SIZE=`su - $1 -c "db2set" | grep -i DB2_HADR_BUF_SIZE | awk -F '=' {'print $2'}`
if [[ "$DB2_HADR_BUF_SIZE" == "262144" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_HADR_BUF_SIZE | | $inst | | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DB2_HADR_BUF_SIZE | | $inst | | | | 1" >> $db2checklog
fi
}
getDbcfg(){
SELF_TUNING_MEM=`su - $1 -c "db2 get db cfg for $2 | grep -i SELF_TUNING_MEM" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ $ARCHITECTURE == "DPF" ]];then
if [[ $SELF_TUNING_MEM -eq "OFF" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SELF_TUNING_MEM | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SELF_TUNING_MEM | | $inst | $dbname | | | 1" >> $db2checklog
fi
else
if [[ $SELF_TUNING_MEM -eq "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SELF_TUNING_MEM | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SELF_TUNING_MEM | | $inst | $dbname | | | 1" >> $db2checklog
fi
fi
DATABASE_MEMORY=`su - $1 -c "db2 get db cfg for $2 | grep -i DATABASE_MEMORY" | awk -F '=' {'print $2'} | sed 's/[ /t]//g' | awk -F '(' {'print $1'}`
if [[ "$DATABASE_MEMORY" == "AUTOMATIC" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DATABASE_MEMORY | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | DATABASE_MEMORY | | $inst | $dbname | | | 1" >> $db2checklog
fi
LOCKLIST=`su - $1 -c "db2 get db cfg for $2 | grep -i LOCKLIST" | awk -F '=' {'print $2'} | sed 's/[ /t]//g' | awk -F '(' {'print $1'}`
if [[ "$LOCKLIST" == "AUTOMATIC" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOCKLIST | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOCKLIST | | $inst | $dbname | | | 1" >> $db2checklog
fi
MAXLOCKS=`su - $1 -c "db2 get db cfg for $2 | grep -i MAXLOCKS" | awk -F '=' {'print $2'} | sed 's/[ /t]//g' | awk -F '(' {'print $1'}`
if [[ "$MAXLOCKS" == "AUTOMATIC" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | MAXLOCKS | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | MAXLOCKS | | $inst | $dbname | | | 1" >> $db2checklog
fi
LOCKTIMEOUT=`su - $1 -c "db2 get db cfg for $2 | grep -iw LOCKTIMEOUT" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOCKTIMEOUT | | $inst | $dbname | | | $LOCKTIMEOUT" >> $db2checklog
CATALOGCACHE_SZ=`su - $1 -c "db2 get db cfg for $2 | grep -i CATALOGCACHE_SZ" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$CATALOGCACHE_SZ" == "10240" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | CATALOGCACHE_SZ | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | CATALOGCACHE_SZ | | $inst | $dbname | | | 1" >> $db2checklog
fi
LOGFILSIZ=`su - $1 -c "db2 get db cfg for $2 | grep -i LOGFILSIZ" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$LOGFILSIZ" == "25600" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGFILSIZ | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGFILSIZ | | $inst | $dbname | | | 1" >> $db2checklog
fi
LOGPRIMARY=`su - $1 -c "db2 get db cfg for $2 | grep -i LOGPRIMARY" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$LOGPRIMARY" == "20" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGPRIMARY | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGPRIMARY | | $inst | $dbname | | | 1" >> $db2checklog
fi
LOGSECOND=`su - $1 -c "db2 get db cfg for $2 | grep -i LOGSECOND" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$LOGSECOND" == "180" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGSECOND | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGSECOND | | $inst | $dbname | | | 1" >> $db2checklog
fi
LOGBUFSZ=`su - $1 -c "db2 get db cfg for $2 | grep -i LOGBUFSZ" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$ARCHITECTURE" == "HADR" ]];then
if [[ "$LOGBUFSZ" -eq "8192" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGBUFSZ | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGBUFSZ | | $inst | $dbname | | | 1" >> $db2checklog
fi
else
if [[ "$LOGBUFSZ" -eq "2048" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGBUFSZ | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | LOGBUFSZ | | $inst | $dbname | | | 1" >> $db2checklog
fi
fi
SORTHEAP=`su - $1 -c "db2 get db cfg for $2 | grep -i SORTHEAP" | awk -F '=' {'print $2'} | sed 's/[ /t]//g' | awk -F '(' {'print $1'}`
if [[ "$SORTHEAP" == "AUTOMATIC" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SORTHEAP | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SORTHEAP | | $inst | $dbname | | | 1" >> $db2checklog
fi
SHEAPTHRES_SHR=`su - $1 -c "db2 get db cfg for $2 | grep -i SHEAPTHRES_SHR" | awk -F '=' {'print $2'} | sed 's/[ /t]//g' | awk -F '(' {'print $1'}`
if [[ "$SHEAPTHRES_SHR" == "AUTOMATIC" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SHEAPTHRES_SHR | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SHEAPTHRES_SHR | | $inst | $dbname | | | 1" >> $db2checklog
fi
PCKCACHESZ=`su - $1 -c "db2 get db cfg for $2 | grep -i PCKCACHESZ" | awk -F '=' {'print $2'} | sed 's/[ /t]//g' | awk -F '(' {'print $1'}`
if [[ "$PCKCACHESZ" == "AUTOMATIC" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | PCKCACHESZ | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | PCKCACHESZ | | $inst | $dbname | | | 1" >> $db2checklog
fi
APPLHEAPSZ=`su - $1 -c "db2 get db cfg for $2 | grep -i APPLHEAPSZ" | awk -F '=' {'print $2'} | sed 's/[ /t]//g' | awk -F '(' {'print $1'}`
if [[ "$APPLHEAPSZ" == "AUTOMATIC" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | APPLHEAPSZ | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | APPLHEAPSZ | | $inst | $dbname | | | 1" >> $db2checklog
fi
TRACKMOD=`su - $1 -c "db2 get db cfg for $2 | grep -i TRACKMOD" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$TRACKMOD" == "ON" || "$TRACKMOD" == "YES" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | TRACKMOD | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | TRACKMOD | | $inst | $dbname | | | 1" >> $db2checklog
fi
SOFTMAX=`su - $1 -c "db2 get db cfg for $2 | grep -i SOFTMAX" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ $DB2LEVEL == 11.1* || $DB2LEVEL == 10.5* ]];then
if [[ "$SOFTMAX" -eq "0" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SOFTMAX | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SOFTMAX | | $inst | $dbname | | | 1" >> $db2checklog
fi
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | SOFTMAX | | $inst | $dbname | | | $SOFTMAX" >> $db2checklog
fi
NEWLOGPATH=`su - $1 -c "db2 get db cfg for $2 | grep -w 'Path to log files'" | awk -F '=' {'print $2'} | awk -F '/' {'print "/" $2'}`
if [[ "$NEWLOGPATH" == "/db2log" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | NEWLOGPATH | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | NEWLOGPATH | | $inst | $dbname | | | 1" >> $db2checklog
fi
ARCHIVELOG=`su - $1 -c "db2 get db cfg for $2 | grep -w LOGARCHMETH1" | awk -F '=' {'print $2'} | awk -F '/' {'print "/" $2'}`
if [[ "$ARCHIVELOG" == "/db2arclog" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | ARCHIVELOG | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | ARCHIVELOG | | $inst | $dbname | | | 1" >> $db2checklog
fi
REC_HIS_RETENTN=`su - $1 -c "db2 get db cfg for $2 | grep -i REC_HIS_RETENTN" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$REC_HIS_RETENTN" == "90" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | REC_HIS_RETENTN | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | REC_HIS_RETENTN | | $inst | $dbname | | | 1" >> $db2checklog
fi
CUR_COMMIT=`su - $1 -c "db2 get db cfg for $2 | grep -i CUR_COMMIT" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$CUR_COMMIT" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | CUR_COMMIT | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | CUR_COMMIT | | $inst | $dbname | | | 1" >> $db2checklog
fi
logindexbuild=`su - $1 -c "db2 get db cfg for $2 | grep -i logindexbuild" | awk -F '=' {'print $2'} | sed 's/[ /t]//g'`
if [[ "$logindexbuild" == "ON" ]];then
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | logindexbuild | | $inst | $dbname | | | 0" >> $db2checklog
else
echo "$DATE_N | Db2 | $DB2LEVEL | $HOSTNAME | $SYSIP | logindexbuild | | $inst | $dbname | | | 1" >> $db2checklog
fi
}
main(){
getOSArchitecture
getInstance
createCheckDir
getSystemMemory
for inst in `ps -ef | grep db2sysc | grep -v grep | awk '{print $1}' |uniq`;do
getDPF $inst
getDb2Level $inst
getDb2diag $inst
getIndirectDBnames $inst
getEtcSecurityLimits $inst
getDb2set $inst
getDbmcfg $inst
for dbname in `echo $dblist`;do
getDBArchitecture $inst $dbname
getDbcfg $inst $dbname
getSevenRunstats $inst $dbname
done
done
getEtcSysctlConf
sendFile
# deleteLogs
echo 0
exit 0
}
main
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
https://www.cndba.cn/hbhe0316/article/22187
版权声明:本文为博主原创文章,未经博主允许不得转载。
DB2