1. 程式人生 > >db2資料庫監控指令碼

db2資料庫監控指令碼

db2資料庫監控指令碼
主要用途

1、監控db2資料庫效能; 
2、按照監控日期生成資料夾,存放監控日誌檔案; 
3、自動清理過期日誌; 
4、可以設定監控時間間隔與監控次數; 
5、結合crontab計劃任務,可以設定何時呼叫指令碼;

注意事項

需要根據業務需要,適當設定監控頻率與監控週期;

版本移植性

因Linux與AIX在指令碼編寫上有少許差異,所以分為兩個指令碼。

Linux下db2監控指令碼
Linux版本

Oracle Linux Server release 6.7

指令碼檔案:snaps.sh

#!/bin/sh
# usage: monitor the db2 health on linux;
# std:
# 1:log dir : snaps.%Y-%m-%d 
# 2:log retains : only retain the last 7 days logs;
#
# set temp path;
export PATH=/home/db2inst1/sqllib/bin:$PATH

# set the max monitor count;
maxCount=5
sleeptime=600
intervalCount=1

# set base dir;
base_dir=/home/db2inst1/tmp/snaps
out_dir=$base_dir/snaps.$(date +%Y-%m-%d)

# show cmd usage;
if [ $# -eq 0 ]; then 
    echo "Usage:sh snaps.sh <database>"
    exit
fi

# clear old logs;
old_dir=$base_dir/snaps.$(date -d "7 days ago" "+%Y-%m-%d")
if [ -d "$old_dir" ]; then 
    echo rmdir $old_dir
    rm -r $old_dir
fi

# make new dir;
if [ ! -d "$out_dir" ]; then 
    echo mkdir $out_dir
    mkdir $out_dir
fi

# exit for test;
# exit 0

# data monitor;
DB=$1
db2 terminate 2>&1
db2 connect to $DB
db2 reset monitor all
db2 update monitor switches using bufferpool on lock on sort on statement on table on uow on timestamp on
while [ $intervalCount -le $maxCount ] ; do
    echo $(date +%H:%M:%S) : $intervalCount/$maxCount
    suffix=$(date +%H:%M:%S.log)

    db2 get snapshot for database manager > $out_dir/dbmsnap.$suffix 2>&1
    db2 get snapshot for database on $DB > $out_dir/$DB.dbsnap.$suffix 2>&1
    db2 get snapshot for applications on $DB > $out_dir/$DB.appsnap.$suffix 2>&1
    db2 get snapshot for tables on $DB > $out_dir/$DB.tablessnap.$suffix 2>&1
    db2 get snapshot for tablespaces on $DB > $out_dir/$DB.tbspsnap.$suffix 2>&1
    db2 get snapshot for locks on $DB > $out_dir/$DB.locksnap.$suffix 2>&1
    db2 get snapshot for bufferpools on $DB > $out_dir/$DB.bpsnap.$suffix 2>&1
    db2 get snapshot for dynamic sql on $DB > $out_dir/$DB.dynsql.$suffix 2>&1

    let intervalCount++
    sleep $sleeptime
done
db2 terminate

exit 0
AIX下db2監控指令碼
Aix版本

Aix 6.1.4.0

指令碼檔案:snaps.sh

#!/bin/sh
# usage: monitor the db2 health on aix;
# std:
# 1:log dir : snaps.%Y-%m-%d 
# 2:log retains : only retain the last 3 days logs;
#
# set temp path;
export PATH=/home/db2inst1/sqllib/bin:$PATH

# set the max monitor count;
maxCount=6
sleeptime=600
intervalCount=1

# set base dir;
base_dir=/home/db2inst1/tmp/snaps
out_dir=$base_dir/snaps.$(date +%Y-%m-%d)

# show cmd usage;
if [ $# -eq 0 ]; then 
    echo "Usage:sh snaps.sh <database>"
    exit
fi

# clear old logs;
old_dir=$base_dir/snaps.$(TZ=aaa$(expr 24 \* 3) date +%Y-%m-%d)
if [ -d "$old_dir" ]; then 
    echo rmdir $old_dir
    rm -r $old_dir
fi

# make new dir;
if [ ! -d "$out_dir" ]; then 
    echo mkdir $out_dir
    mkdir $out_dir
fi

# exit for test;
#exit 0

# data monitor;
DB=$1
db2 terminate 2>&1
db2 connect to $DB
db2 reset monitor all
db2 update monitor switches using bufferpool on lock on sort on statement on table on uow on timestamp on
while [ $intervalCount -le $maxCount ] ; do
    echo $(date +%H:%M:%S) : $intervalCount/$maxCount
    suffix=$(date +%H:%M:%S.log)

    db2 get snapshot for database manager > $out_dir/dbmsnap.$suffix 2>&1
    db2 get snapshot for database on $DB > $out_dir/$DB.dbsnap.$suffix 2>&1
    db2 get snapshot for applications on $DB > $out_dir/$DB.appsnap.$suffix 2>&1
    db2 get snapshot for tables on $DB > $out_dir/$DB.tablessnap.$suffix 2>&1
    db2 get snapshot for tablespaces on $DB > $out_dir/$DB.tbspsnap.$suffix 2>&1
    db2 get snapshot for locks on $DB > $out_dir/$DB.locksnap.$suffix 2>&1
    db2 get snapshot for bufferpools on $DB > $out_dir/$DB.bpsnap.$suffix 2>&1
    db2 get snapshot for dynamic sql on $DB > $out_dir/$DB.dynsql.$suffix 2>&1

    let intervalCount=intervalCount+1
    sleep $sleeptime
done
db2 terminate
exit 0
計劃任務
0 7-19 * * * nohup sh /home/db2inst1/tmp/snaps/snaps.sh 資料庫名稱 &
1
參考
Expr算數運算 
詳細講解算數運算方式,並且因跨平臺移植問題,建議使用expr進行算數運算; 
參考:http://blog.chinaunix.net/uid-209416-id-2410742.html

Aix 計算前一天 
參考:http://blog.163.com/squall_smile/blog/static/60349840201431593851292/ 
詳細講解aix中使用TZ計算日期的方式

linux Date日期 
參考:http://blog.chinaunix.net/uid-9370128-id-271932.html

排程服務cron 
參考:http://www.cnblogs.com/itech/archive/2011/02/09/1950226.html

判斷檔案目錄是否存在 
參考:http://www.cnblogs.com/emanlee/p/3583769.html
--------------------- 
作者:huryer 
來源:CSDN 
原文:https://blog.csdn.net/huryer/article/details/50970379 
版權宣告:本文為博主原創文章,轉載請附上博文連結!