程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2日志文件歸檔腳本db2uext2的bashshell實現用戶出口USEREXIT

DB2日志文件歸檔腳本db2uext2的bashshell實現用戶出口USEREXIT

編輯:DB2教程

很久沒發過文了,發一個!大笑

參考官方文檔:http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.ha.doc%2Fdoc%2Fc0024701.html

使用用戶出口程序使日志文件歸檔和檢索自動進行

通過創建 DB2? 數據庫管理器調用來執行歸檔或檢索操作的用戶出口程序,可以自動執行日志文件歸檔和檢索。

當 DB2 數據庫管理器調用用戶出口程序時,會執行下列操作:

  • 數據庫管理器將控制權交給用戶出口程序;

  • 數據庫管理器將參數傳遞給用戶出口程序;並且

  • 在完成時,用戶出口程序再將返回碼發送回數據庫管理器。


    DB2系統本身帶的是 C 語言的,並且比較復雜,還編譯不過,研究參數之後 想辦法 寫了一個簡單的 bash shell 腳本的

    需要把腳本 db2uext2 在 root 下復制到 /home/db2inst1/sqllib/bin/ 目錄下

    並且修改權限,不知道不改能不能用,反正改改吧

    chown bin:bin db2uext2

    chmod 755 db2uext2

    然後修改數據庫配置

    db2 get db cfg for DBNAME | grep LOGARCH

    db2 update db cfg for DBNAME using LOGARCHMETH1 USEREXIT

    然後重啟數據庫生效


    目前只實現了存檔功能ARCHIVE,沒有實現恢復功能,數據庫恢復時靠指定日志路徑進行恢復


    db2uext2 腳本文件的內容

    #!/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


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved