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_profile
    export resize_tmp=/tmp/resize_tmp.log
    > $resize_tmp
    f=$1
    for((f=$1; f<=$2; f++));
    do
    echo "$(date +'%F %T'): Resize datafile : $f">> $resize_tmp
      for((i=100; i<=2400; i=i+100))
      do
      export wa=99
      # resize datafile only when CPU iowait is less than 5%
      until [ $wa -lt 5 ]; do
          sleep 1
          wa=$(top -cn 1 | grep 'wa,'|grep -v grep|awk '{print $10}'|cut -d. -f1)
      done
      echo "$(date +'%F %T'):Begin alter database datafile $f resize $i m;">> $resize_tmp
      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
      done
    done
    # End
    

特立独行
0 声望2 粉丝

技术需要分享。