用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
  更多优质资料尽在百考试题论坛 百考试题在线题库 oracle/认证更多详细资料

相关文章


用Oracle存储来分析Unix系统的性能(2)Linux认证考试
用Oracle存储来分析Unix系统的性能(1)Linux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛