Oracle批量扩数据文件脚本(file_id间断)

  • nohup ./resize.sh 20 25 &,参数指定数据文件file_id 20 到 25 顺次串行扩大大小;
  • 每次扩大数据文件从100m递增扩大到2400m,每次递增100m;初始数据文件大小要小于100m或者未应用,否则报错;
  • 校验Linux CPU IOwait,只有<5%时才resize数据文件;
  • IO性能足够状况,#sleep 1无需放开,IO较差环境,倡议设置脚本执行间隔时间,单位-秒;

    #!/bin/bash# Usage: nohup ./resize.sh 20 25 &source ~/.bash_profileexport resize_tmp=/tmp/resize_tmp.log> $resize_tmpf=$1for((f=$1; f<=$2; f++));doecho "$(date +'%F %T'): Resize datafile : $f">> $resize_tmp  for((i=100; i<=2400; i=i+100))  do  echo "$(date +'%F %T'):Begin alter database datafile $f resize $i m;">> $resize_tmp  export wa=99  # resize datafile only when CPU iowait is less than 5%  until [ $wa -lt 5 ]; do      wa=$(top -cn 1 | grep 'wa,'|grep -v grep|awk '{print $10}'|cut -d. -f1)      echo -e "alter database datafile $f resize $i m;\nexit;" | sqlplus -S / as sysdba      echo "$(date +'%F %T'):End  alter database datafile $f resize $i m;">> $resize_tmp      #sleep 1  done  donedone# End