Neueste VersionenFixList
11.1.0.7 FixList
10.5.0.9 FixList
10.1.0.6 FixList
9.8.0.5 FixList
9.7.0.11 FixList
9.5.0.10 FixList
9.1.0.12 FixList
Haben Sie Probleme? - Kontaktieren Sie uns.
Kostenlos registrieren anmeldung-x26
Kontaktformular kontakt-x26

DB2 - Problembeschreibung

Problem IC97667 Status: Geschlossen

MAKE HADRVXX_MONITOR.KSH SCRIPT MORE ROBUST TO REDUCE FALSE NEGATIVES

Produkt:
DB2 FOR LUW / DB2FORLUW / A10 - DB2
Problembeschreibung:
** This APAR applies only to integrated HA solutions ** 
 
On memory constrained systems or very busy systems ps behavior 
is unpredictable where ps may return the process name in square 
brackets. 
Hence there's a chance that this check: 
 
p_pid=$(ps -u ${candidate_P_instance?} -o args | grep -c 
"^db2sysc") 
 
returns 0, which in turns makes hadrVxx_monitor.ksh script 
return a status of 2 i.e. HADR resource is down. 
 
Additionally the following line with the p_out parameter ends up 
storing all the ps output on one line, which is then grepped. 
When that line contains a db2sysc entry in brackets, it returns 
with a 0 return code which places HADR in an unknown state: 
 
p_out=$(ps -u ${candidate_P_instance?} -o args | egrep 
"^db2sysc|^\[db2sysc\]"| grep -v defunct)
Problem-Zusammenfassung:
**************************************************************** 
* USERS AFFECTED:                                              * 
* All                                                          * 
**************************************************************** 
* PROBLEM DESCRIPTION:                                         * 
* See Error Description                                        * 
**************************************************************** 
* RECOMMENDATION:                                              * 
* Upgrade to DB2 v10.1 FP4.                                    * 
****************************************************************
Local-Fix:
To avoid these "false negatives", the above lines have been 
modified as follows: 
 
OLD 
 
   # We need to checking if the instance start is complete here. 
To minimize 
   # the dependency on the checking for the db2 start script, we 
first check 
   # if there is a db2sysc process. If not, no need to go 
further. If there is 
   # a db2sysc process, check if the script is still running. 
   p_pid=$(ps -u ${candidate_P_instance?} -o args | grep -c 
"^db2sysc") 
   if [ $p_pid -eq 0 ]; then 
      logger -i -p info -t $PROGNAME "$0 $DB2INSTANCE is 
offline, hadr monitor must return offline" 
      rc=2 
      return $rc 
   elif [ $p_pid -ne 0 ]; then 
      isInstanceStartRunning=$(ps -ef | grep db2V97_start.ksh | 
grep ${candidate_P_instance?} | wc -l) 
      if [[ $isInstanceStartRunning -ne 0 ]]; then 
         logger -i -p notice -t $0 "db2sysc started but Instance 
start still running...return OFFLINE for HADR database 
${DB2HADRDBNAME?}" 
         rc=2 
         return $rc 
      fi 
   fi 
 
 
NEW 
   # We need to checking if the instance start is complete here. 
To minimize 
   # the dependency on the checking for the db2 start script, we 
first check 
   # if there is a db2sysc process. If not, no need to go 
further. If there is 
   # a db2sysc process, check if the script is still running. 
   p_out=$(ps -u ${candidate_P_instance?} -o args | egrep 
"^db2sysc|^\[db2sysc\]"| grep -v defunct) 
   p_pid=$(echo $p_out | grep -v "\[db2sysc\]" | grep -c 
"db2sysc") 
   if [ $p_pid -eq 0 ]; then 
      p_pid=$(echo $p_out | grep -c "\[db2sysc\]") 
      if [[ $p_pid != 0 ]]; then 
         log err "ps returns only [db2sysc]: returning 0" 
         rc=0 
      else 
         logger -i -p info -t $PROGNAME "$0 $DB2INSTANCE is 
offline, hadr monitor must return offline" 
         rc=2 
      fi 
      return $rc 
   elif [ $p_pid -ne 0 ]; then 
      isInstanceStartRunning=$(ps -ef | grep db2V97_start.ksh | 
grep ${candidate_P_instance?} | wc -l) 
      if [[ $isInstanceStartRunning -ne 0 ]]; then 
         logger -i -p notice -t $0 "db2sysc started but Instance 
start still running...return OFFLINE for HADR database 
${DB2HADRDBNAME?}" 
         rc=2 
         return $rc 
      fi 
   fi 
 
 
OLD 
 
 p_out=$(ps -u ${candidate_P_instance?} -o args | egrep 
"^db2sysc|^\[db2sysc\]"| grep -v defunct) 
   p_pid=$(echo $p_out | grep -v "\[db2sysc\]" | grep -c 
"db2sysc") 
   if [ $p_pid -eq 0 ]; then 
      p_pid=$(echo $p_out | grep -c "\[db2sysc\]") 
      if [[ $p_pid != 0 ]]; then 
         log err "ps returns only [db2sysc]: returning 0" 
         rc=0 
 
 
NEW 
 
   p_out=$(ps -u ${candidate_P_instance?} -o args | egrep 
"^db2sysc|^\[db2sysc\]"| grep -v defunct) 
   p_pid=$(echo $p_out | tr " " "\n" | grep -v "\[db2sysc\]" | 
grep -c "db2sysc") 
   if [ $p_pid -eq 0 ]; then 
      p_pid=$(echo $p_out | grep -c "\[db2sysc\]") 
      if [[ $p_pid != 0 ]]; then 
         log err "ps returns only [db2sysc]: returning 0" 
         rc=0
verfügbare FixPacks:
DB2 Version 10.1 Fix Pack 4 for Linux, UNIX, and Windows
DB2 Version 10.1 Fix Pack 6 for Linux, UNIX, and Windows

Lösung
Fixed in DB2 v10.1 FP4.
Workaround
keiner bekannt / siehe Local-Fix
Weitere Daten
Datum - Problem gemeldet    :
Datum - Problem geschlossen :
Datum - der letzten Änderung:
14.11.2013
02.06.2014
02.06.2014
Problem behoben ab folgender Versionen (IBM BugInfos)
Problem behoben lt. FixList in der Version
10.1.0.4 FixList