リスト1 getsnap.ksh(UNIX)

#!/usr/bin/ksh
#  take a snapshot after specified sleep period for a number of iterations
#  parameters: (1) database name
#              (2) directory for output
#              (3) interval between iterations (seconds)
#              (4) maximum number of iterations
#        
#  Note: You may receive an error about the monitor heap being too small. You may 
#        want to set mon_heap_sz to 2048 while monitoring.

if [ $# -ne 4 ]
  then echo "4 parameters required: dbname output_dir sleep_interval iterations"; exit
fi

dbname=$1
runDir=$2
sleep_interval=$3
iterations=$4

stat_interval=3
stat_iterations=$(($sleep_interval/$stat_interval))

if [[ -d $runDir ]]; then
   echo "dir: $runDir already exists, either remove it or use another directory name"
   exit
fi
mkdir  $runDir
cd     $runDir

db2 update monitor switches using bufferpool on lock on sort on statement on \
    table on uow on

# repeat the snapshot loop for the specified iterations
let i=1
while [ i -le $iterations ] 
  do
    if [ $i -le 9 ]
    then 
      i2="0$i"
    else
      i2="$i"
    fi 
    echo "Iteration $i2 (of $iterations) starting at `date`"
    vmstat $stat_interval $stat_iterations > vmstat_$i2
    iostat $stat_interval $stat_iterations > iostat_$i2
    db2 -v reset monitor all
    sleep $sleep_interval
    db2 -v get snapshot for dbm > snap_$i2
    db2 -v get snapshot for all on $dbname >> snap_$i2
    echo "Iteration $i2 (of $iterations) complete at `date`"
    let i=$i+1
  done 

db2 update monitor switches using bufferpool off lock off sort off statement off \
    table off uow off 
db2 terminate