bash shell version of db2uext2 (DB2 USEREXIT),backup archive log to remote host!

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • caviler
    New Member
    • Feb 2014
    • 5

    bash shell version of db2uext2 (DB2 USEREXIT),backup archive log to remote host!


    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
    Code:
    nano -w /home/db2inst1/sqllib/bin/db2uext2
    2. modify permissions
    Code:
    chown bin:bin /home/db2inst1/sqllib/bin/db2uext2
    chmod 755 /home/db2inst1/sqllib/bin/db2uext2
    3. update LOGARCHMETH1 to USEREXIT
    Code:
    db2 get db cfg for DBNAME | grep LOGARCH
    db2 update db cfg for DBNAME using LOGARCHMETH1 USEREXIT
    4. wait or restart db2 immediately


    =============== =============== =============
    db2uext2 script
    =============== =============== =============
    Code:
    #!/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
Working...