vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| diff -u /home/system/db2inst1/nya/bin/db2filter.py ./db2filter.py --- /home/system/db2inst1/nya/bin/db2filter.py 2007-01-12 15:23:34.000000000 +0100 +++ ./db2filter.py 2007-04-14 02:31:58.000000000 +0200 @@ -26,24 +26,31 @@ def main(): ignore = [ "DB20000I" ] + single = False try: - opts, args = getopt.getopt(sys.argv[1:], "i:") + opts, args = getopt.getopt(sys.argv[1:], "i:s") except getopt.GetoptError: sys.exit(-1) for o, a in opts: if (o == "-i"): args = a.split(',') ignore += args + if (o == "-s"): + single = True inf = sys.stdin lines = '' + lastline = '' for line in inf: + lastline = line m = re.match('^\S*$', line) if (m == None): lines += line else: parse_line(lines, ignore) lines = '' + if (single): + parse_line(lastline, ignore) if __name__ == "__main__": main() diff -u /home/system/db2inst1/nya/bin/pre_upgrade.py ./pre_upgrade.py --- /home/system/db2inst1/nya/bin/pre_upgrade.py 2007-01-12 15:23:34.000000000 +0100 +++ ./pre_upgrade.py 2007-04-14 07:30:54.000000000 +0200 @@ -136,7 +136,8 @@ print line if (current_state < 2): - print """values 'Upgrade aborted. Database version already >= %s' @ + print """ + values 'Upgrade aborted. Database version already >= %s' @ -- generate error, exit(4) drop index sysibm.XXX @ """ % (cv) diff -u /home/system/db2inst1/nya/bin/upgrade.sh ./upgrade.sh --- /home/system/db2inst1/nya/bin/upgrade.sh 2007-03-12 12:08:08.000000000 +0100 +++ ./upgrade.sh 2007-04-14 10:07:54.000000000 +0200 @@ -1,7 +1,6 @@ #!/bin/sh -# source helpers -. db_helpers +declare -i rc ############################################# # Parse cmdline @@ -50,7 +49,7 @@ mkdir -p ${logdir} db=`echo ${DB} | tr a-z A-Z` date=`date "+%Y-%m-%d_%H:%M:%S"` -logfile=${logdir}/${db}_${date}.log +logfile=${logdir}${db}_${date}.log export PATH=${bindir}:${PATH} @@ -74,7 +73,7 @@ * upgrade $db aborted `date +%Y%m%d%H%M%S` ************************************************** ** EOF - db2 terminate + db2 terminate > /dev/null 2>&1; exit 1 } @@ -86,7 +85,7 @@ * upgrade $db finished `date +%Y%m%d%H%M%S` ************************************************** ** EOF - db2 terminate + db2 terminate > /dev/null 2>&1; exit 0 } @@ -105,6 +104,55 @@ abort "ERROR: wrong usage"; } +runstats_and_rebind() { + + cnt=0 + echo "---------------------------------------------" | tee -a ${logfile} + echo "Doing runstats for tables with old statistics" | tee -a ${logfile} + echo "---------------------------------------------" | tee -a ${logfile} + + for t in `db2 -x "select rtrim(tabschema) || '.' || tabname \ + from syscat.indexes i \ + where tabschema in ('NYA','STUDERA','HUBBLE','URVAL') \ + and exists ( \ + select 1 from syscat.tables t \ + where (i.tabschema, i.tabname) = (t.tabschema, t.tabname) \ + and t.type in ('S','T') \ + ) \ + and (stats_time + 24 hours < current timestamp or \ + nleaf = -1 or nlevels = -1)"`; do + db2 -s -l ${logfile} "runstats on table $t and indexes all" | ./db2filter.py -s 2>&1 + cnt=`expr $cnt + 1` + done + echo "" + echo "" + echo "Updated statistics for $cnt tables" | tee -a ${logfile} + echo "" + + cnt=0 + echo "-------------------------------------" | tee -a ${logfile} + echo "Rebinding invalid procedures/packages" | tee -a ${logfile} + echo "-------------------------------------" | tee -a ${logfile} + + for p in `db2 -x "select \ + rtrim(z.ROUTINESCHEMA) || '.' || rtrim(z.ROUTINENAME) \ + from syscat.packages y \ + inner join syscat.routinedep x \ + on (x.BSCHEMA, x.BNAME) = (y.PKGSCHEMA, y.PKGNAME) \ + inner join syscat.routines z \ + on (x.ROUTINESCHEMA, x.ROUTINENAME) = (z.ROUTINESCHEMA, z.SPECIFICNAME) \ + where y.valid <> 'Y' \ + or z.valid <> 'Y'"`; do + db2 -s -l ${logfile} "call sysproc.rebind_routine_package('P','$p','ANY')" | ./db2filter.py -i "Return Status = 0" 2>&1 + cnt=`expr $cnt + 1` + done + echo "" + echo "" + echo "Rebinded $cnt procedures/packages" | tee -a ${logfile} + echo "" +} + + ############################################# # Validation of input ############################################# @@ -116,6 +164,10 @@ [ "x${username}" = "x" ] && usage [ "x${passwd}" = "x" ] && usage +echo "-----------------" | tee -a ${logfile} +echo "Preparing upgrade" | tee -a ${logfile} +echo "-----------------" | tee -a ${logfile} + db=`echo ${DB} | tr a-z A-Z` if [ "x${username}" = "x" ]; then db2 connect to ${db} > /dev/null 2>&1; @@ -127,6 +179,7 @@ abort "ERROR: Unable to connect to ${db}" fi + # create function to cmp versions pushd ${basedir}/function/ > /dev/null 2>&1; dos2unix GET_DB_VERSION.sql > /dev/null 2>&1; @@ -165,25 +218,40 @@ pushd /tmp > /dev/null 2>&1 dos2unix current_upgrade.sql > /dev/null 2>&1; popd > /dev/null 2>&1 -db2 -s +c -l ${logfile} -td@ -f /tmp/current_upgrade.sql -rc=$? -echo "" -echo "-----------------------------------------------------" +echo "" | tee -a ${logfile} +echo "-----------------" | tee -a ${logfile} +echo "Executing upgrade" | tee -a ${logfile} +echo "-----------------" | tee -a ${logfile} + +db2 -x -s +c -l ${logfile} -td@ -f /tmp/current_upgrade.sql | ../db2filter.py -i "Return Status = 0" +rc=${PIPESTATUS[0]} + +echo "" | tee -a ${logfile} if [ $rc -ge 4 ]; then - echo "ERROR: Transactions where rolled back due to error" - echo " db2 exit with $rc, see ${logfile} for details" - db2 rollback > /dev/null 2>&1; + echo "-----------------------------------------------------" | tee -a ${logfile} + echo "ERROR: Transactions where rolled back due to error" | tee -a ${logfile} + echo " db2 exit with $rc, see ${logfile} for details" | tee -a ${logfile} + echo "-----------------------------------------------------" | tee -a ${logfile} + db2 rollback > /dev/null 2>&1; + abort elif [ $rc -gt 0 ]; then - echo "INFO: There where warnings but all transactions where committed succesfully." - echo " db2 exit with $rc, see ${logfile} for details" db2 commit > /dev/null 2>&1; + runstats_and_rebind + echo "-----------------------------------------------------" | tee -a ${logfile} + echo "INFO: There where warnings but all transactions where committed succesfully." | tee -a ${logfile} + echo " db2 exit with $rc, see ${logfile} for details" | tee -a ${logfile} + echo "-----------------------------------------------------" | tee -a ${logfile} + success else - echo "INFO: All transactions where committed succesfully." db2 commit > /dev/null 2>&1; + runstats_and_rebind + echo "-----------------------------------------------------" | tee -a ${logfile} + echo "INFO: All transactions where committed succesfully." | tee -a ${logfile} + echo "-----------------------------------------------------" | tee -a ${logfile} + success fi -db2 connect reset > /dev/null 2>&1; +#db2 connect reset > /dev/null 2>&1; -echo "-----------------------------------------------------" |
| Thread Tools | |
| Display Modes | |
|
|