How to automate backup archive log to remote host?
Using the IBM supplied UserExit sample program db2uext2.cdisk? It's too complex and allways is error while compiling.
So I decide to write a bash version of db2uext2, ant it works!
1. create bash shell file
Expand|Select|Wrap|Line Numbers
- nano -w /home/db2inst1/sqllib/bin/db2uext2
Expand|Select|Wrap|Line Numbers
- chown bin:bin /home/db2inst1/sqllib/bin/db2uext2
- chmod 755 /home/db2inst1/sqllib/bin/db2uext2
Expand|Select|Wrap|Line Numbers
- db2 get db cfg for DBNAME | grep LOGARCH
- db2 update db cfg for DBNAME using LOGARCHMETH1 USEREXIT
===========================================
db2uext2 script
===========================================
Expand|Select|Wrap|Line Numbers
- #!/bin/bash
- #db2uext2 -OSLinux -RLSQL07020 -RQARCHIVE -DBDBNAME -NN0 -LP/data/archlog/ -LNS0000123.LOG
- #copy archived log file to remote host, do not delete local log file!!!
- #do not delete local log file!!!
- RHOST=192.168.0.180
- RROOT=/data/backup/
- LROOT=/data/archlog/
- DIR=/opt/admin/db2
- LOG=$DIR/log/archive-log.log
- RQ=""
- DB=""
- LP=""
- LN=""
- for arg in "$@"
- do
- opt=${arg:1:2}
- val=${arg:3}
- if [ "$opt" = "RQ" ]; then
- RQ="$val"
- elif [ "$opt" = "DB" ]; then
- DB="$val"
- elif [ "$opt" = "LP" ]; then
- LP="$val"
- elif [ "$opt" = "LN" ]; then
- LN="$val"
- fi
- done
- now=`date +'%Y-%m-%d %H:%M:%S'`
- today=`date +%Y-%m-%d`
- LPATH=$LROOT$DB/archlog/
- LFILE=$LPATH$LN
- if [ "$RQ" = "ARCHIVE" ]; then
- if [ ! -d $LPATH ]; then
- echo create local archive log path $LPATH
- mkdir -p $LPATH >> $LOG
- fi
- scp $LP$LN $LPATH >> $LOG
- RPATH=$RROOT$DB/$today/archlog
- message="$now move $LFILE -> $RHOST:$RPATH"
- ssh $RHOST mkdir -p $RPATH >> $LOG
- rsync -q -auPv $LFILE $RHOST:$RPATH >> $LOG
- rm $LFILE
- #echo $message
- echo $message >> $LOG
- else
- echo RESTORE
- fi
http://blog.csdn.net/caviler/article/details/19562387