用Oracle存储来分析Unix系统的性能(2)Linux认证考试
文章作者 100test 发表时间 2009:05:10 16:50:49
来源 100Test.Com百考试题网
1. 创建get_vmstat.ksh脚本
改脚本用于定时执行vmstat命令并且将结果存入数据库。
# get_vmstat.ksh
#!/bin/ksh
#----------------------------------------
# 首先设定环境变量,根据实际环境修改.
#----------------------------------------
ORACLE_SID=kamusdb
export ORACLE_SID
ORACLE_HOME=`cat /var/opt/oracle/oratab|grep
^$ORACLE_SID:|cut -f2 -d : `
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
SERVER_NAME=`uname -a|awk {print $2} `
typeset -u SERVER_NAME
export SERVER_NAME
#----------------------------------------
# 每5分钟运幸淮蝪mstat(300秒),可以根据实际情况修改.
#----------------------------------------
SAMPLE_TIME=300
#----------------------------------------
# 脚本一旦运行将不会停止,除非关闭操作系统 . . . .
# -S参数表示监控swap空间的情况,报告si,so列
# msg$$中的$$表示一个任意2位数字,系统自动生成
#----------------------------------------
while true
do
vmstat –S ${SAMPLE_TIME} 2 >. /tmp/msg$$
#----------------------------------------
# Solaris系统的vmstat没有wait CPU统计,所以我们在那一列中存入0
# $1, $2, $6, $7等数字分别表示vmstat输出中的第几列,
# 每个Unix系统中的vmstat输出可能都不一样,
# 所以修改这些列号,就可以应对不同的操作系统。
#----------------------------------------
cat /tmp/msg$$|sed 1,3d | awk
{ printf("%s %s %s %s %s %s %s %s %s %s n",
$1, $2, $6, $7, $8, $9, $12, $20, $21, $22) }
| while read RUNQUE WAITQUE SWAPIN SWAPOUT
PAGE_IN PAGE_OUT PAGE_SCAN USER_CPU SYSTEM_CPU IDLE_CPU
do
$ORACLE_HOME/bin/sqlplus perfstat/perfstat <.
insert into perfstat.stats$vmstat
values (
SYSDATE,
$SAMPLE_TIME,
$SERVER_NAME ,
$RUNQUE,
$WAITQUE,
$SWAPIN,
$SWAPOUT,
$PAGE_IN,
$PAGE_OUT,
$PAGE_SCAN,
$USER_CPU,
$SYSTEM_CPU,
$IDLE_CPU,
0
).
commit.
EXIT
EOF
done
done
#----------------------------------------
#删除临时文件
#----------------------------------------
rm /tmp/msg$$
2. 创建run_vmstat.ksh脚本
该脚本放在crontab中,用来定时检查get_vmstat.ksh脚本有没有正常运行,如果在运行,那么不作任何动作,如果不在运行,那么就运行get_vmstat.ksh脚本。这个脚本的意义在于防止重新启动操作系统之后忘记运行get_vmstat.ksh脚本。
# run_vmstat.ksh
#!/bin/ksh
#----------------------------------------
# 首先设定环境变量,根据实际环境修改. . . .
#----------------------------------------
SCRIPT_PATH=`echo ~oracle/vmstat`
export SCRIPT_PATH
ORACLE_SID=kamusdb
export ORACLE_SID
ORACLE_HOME=`cat /var/opt/oracle/oratab|grep $ORACLE_SID:|cut -f2 -d : `
export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH
export PATH
#----------------------------------------
# 作更进一步地控制,在系统没有操作的时间内停止监控
# 晚上8点到第二天凌晨8点之间停止监控
# 其它时间如果get_vmstat不在运行,就运行它
#----------------------------------------
HOUR=`date "%H"`
check_stat=`ps -ef|grep get_vmstat|grep -v grep|wc -l`
vmstat_num=`expr $check_stat`
if [ $HOUR -gt 19 ] || [ $HOUR -lt 8 ]
then
if [ $vmstat_num -gt 0 ]
then kill -9 `ps -ef|grep get_vmstat
|grep -v grep|awk {print $2 } ` >. /dev/null
fi
else
if [ $vmstat_num -le 0 ]
then nohup $SCRIPT_PATH/get_vmstat.ksh >. /dev/null 2>.&.1 &.
fi
fi
更多优质资料尽在百考试题论坛 百考试题在线题库