设为首页 收藏本站
查看: 909|回复: 0

[经验分享] Linux脚本自动安装Oracle-kan

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-9-6 12:30:25 | 显示全部楼层 |阅读模式
  #该脚本包含以下模块
  #sys_check,系统检查
  #evn_check,配置系统环境变量
  #oracle_check,对Oracle安装目录进行检查
  #silent_check, 对静默安装的配置文件进行配置。
  #oracle_ins,安装模块
  #clean_check,清除模块
  #rollback,回滚模块
  #!/bin/bash
  set -o nounset
  set -o errexit
  set -o pipefail
  ora_DIR=${1:-"/oracle"}
  ora_HOME=$ora_DIR/product/11.2.0/db_1
  ora_USER=oracle
  ora_z1=${2:-"linux.x64_11gR2_database_1of2.zip"}
  ora_z2=${3:-"linux.x64_11gR2_database_2of2.zip"}
  host_NAME=${4:-"/oracledb"}
  ora_rsp=$ora_DIR/database/response/db_install.rsp
  USER_PASSW=${5:-"oracle"}
  USER_HOME=${6:-"/oracle"}
  FTP=${8:-"10.243.124.6"}
  #sys_check,
  function sys_check() {
  if grep 'Red Hat' /etc/system-release>/dev/null 2>&1 && [ $(awk 'BEGIN {FS=" "} {print int($7)}' /etc/system-release) -ge 6 ];then
  echo "$(date "+%Y-%m-%d"): check $(grep "Red Hat" /etc/system-release) supported"
  elif grep 'CentOS' /etc/system-release>/dev/null 2>&1  &&  [ $(awk 'BEGIN {FS=" "} {print int($4)}' /etc/system-release) -ge 6 ];then
  echo "$(date "+%Y-%m-%d"): check $(grep 'CentOS' /etc/system-release) supported"
  else
  echo "$(date "+%Y-%m-%d"): Our installing shell support 'Redhat 6 or later' and 'centos 6or later'."

  echo '            Please check your system`s>  echo '            the installing shell exit'
  exit
  fi
  }
  #evn_check,
  function evn_check() {
  touch  $ora_DIR/.bash_profile
  if grep 'ORACLE_BASE=' $ora_DIR/.bash_profile>/dev/null 2>&1;then
  sed -i "s#ORACLE_BASE=.*#ORACLE_BASE=$ora_DIR#g" $ora_DIR/.bash_profile
  #echo "ORACLE_BASE=$ora_DIR modified"
  else
  echo "export ORACLE_BASE=$ora_DIR">>$ora_DIR/.bash_profile
  #echo "ORACLE_BASE=$ora_DIR imported"
  fi
  if grep 'ORACLE_HOME=' $ora_DIR/.bash_profile>/dev/null 2>&1;then
  sed -i "s#ORACLE_HOME=.*#ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1#g" $ora_DIR/.bash_profile
  #echo "ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 modified"
  else
  echo "export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1">>$ora_DIR/.bash_profile
  #echo "ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 imported"
  fi
  if grep 'PATH=' $ora_DIR/.bash_profile>/dev/null 2>&1;then
  sed -i 's#PATH=.*#PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin#g' $ora_DIR/.bash_profile
  #echo "PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin modified"
  else
  echo 'export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin'>>$ora_DIR/.bash_profile
  #echo "PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin imported"
  fi
  if grep 'ROACLE_PID=' $ora_DIR/.bash_profile>/dev/null 2>&1;then
  sed -i 's#ROACLE_PID=.*#ROACLE_PID=ora11g#g' $ora_DIR/.bash_profile
  #echo "ROACLE_PID=ora11g modified"
  else
  echo 'export ROACLE_PID=ora11g'>>$ora_DIR/.bash_profile
  #echo "ROACLE_PID=ora11g imported"
  fi
  if grep 'NLS_LANG=' $ora_DIR/.bash_profile>/dev/null 2>&1;then
  sed -i 's#NLS_LANG=.*#NLS_LANG=AMERICAN_AMERICA.AL32UTF8#g' $ora_DIR/.bash_profile
  #echo "NLS_LANG=AMERICAN_AMERICA.AL32UTF8 modified"
  else
  echo 'export NLS_LANG=AMERICAN_AMERICA.AL32UTF8'>>$ora_DIR/.bash_profile
  #echo "NLS_LANG=AMERICAN_AMERICA.AL32UTF8 imported"
  fi
  if grep 'LD_LIBRARY_PATH=' $ora_DIR/.bash_profile>/dev/null 2>&1;then
  sed -i 's#LD_LIBRARY_PATH=.*#LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib#g' $ora_DIR/.bash_profile
  #echo "LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib modified"
  else
  echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib'>>$ora_DIR/.bash_profile
  #echo "LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib imported"
  fi
  echo "$(date "+%Y-%m-%d"): check system EVN and profile of user overwrited"
  }
  #silent_check
  function silent_check(){
  # local ora_rsp='$ora_DIR'/database/response/db_install.rsp
  if [ -e $ora_home ] ;then
  echo "$(date "+%Y-%m-%d"): found $ora_home "
  else
  mkdir -p $ora_DIR/product/11.2.0/db_1
  fi
  sed -i 's#oracle.install.option=.*#oracle.install.option=INSTALL_DB_SWONLY#g'  $ora_rsp >/dev/null 2>&1
  sed -i 's#ORACLE_HOSTNAME=.*#ORACLE_HOSTNAME='$host_NAME'#g'  $ora_rsp >/dev/null 2>&1
  sed -i 's#UNIX_GROUP_NAME=.*#UNIX_GROUP_NAME=oinstall#g'  $ora_rsp >/dev/null 2>&1
  sed -i 's#INVENTORY_LOCATION=.*#INVENTORY_LOCATION='$ora_DIR'/oraInventory#g'  $ora_rsp >/dev/null 2>&1
  sed -i 's#SELECTED_LANGUAGES=.*#SELECTED_LANGUAGES=en,zh_CN#g'  $ora_rsp >/dev/null 2>&1
  sed -i 's#ORACLE_HOME=.*#ORACLE_HOME='$ora_HOME'#g'  $ora_rsp >/dev/null 2>&1
  sed -i 's#ORACLE_BASE=.*#ORACLE_BASE='$ora_DIR'#g'  $ora_rsp >/dev/null 2>&1
  sed -i 's#oracle.install.db.isCustomInstall.*#oracle.install.db.isCustomInstall=false#g'  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.DBA_GROUP=.*#oracle.install.db.DBA_GROUP=dba#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.OPER_GROUP=.*#oracle.install.db.OPER_GROUP=oinstall#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.type=.*#oracle.install.db.config.starterdb.type=GENERAL_PURPOSE#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.globalDBName=.*#oracle.install.db.config.starterdb.globalDBName=ora11g#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.SID=.*#oracle.install.db.config.starterdb.SID=ora11g#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.characterSet=.*#oracle.install.db.config.starterdb.characterSet=AL32UTF8#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.memoryOption=.*#oracle.install.db.config.starterdb.memoryOption=true#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.memoryLimit=.*#oracle.install.db.config.starterdb.memoryLimit=1500#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.password.ALL=.*#oracle.install.db.config.starterdb.password.ALL=oracle#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.storageType=.*#oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=.*#oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#oracle.install.db.config.starterdb.automatedBackup.enable=.*#oracle.install.db.config.starterdb.automatedBackup.enable=false#g"  $ora_rsp >/dev/null 2>&1
  sed -i "s#DECLINE_SECURITY_UPDATES=.*#DECLINE_SECURITY_UPDATES=true#g"  $ora_rsp >/dev/null 2>&1
  echo "silent_check,is ok"
  }
  #oracle_ins,
  function oracle_ins(){
  echo "$(date "+%Y-%m-%d"): begining install oracle"
  trap rollback INT TERM EXIT
  if [ -e $ora_z1 ] ;then
  echo "$(date "+%Y-%m-%d"): found $ora_z1 "
  else
  echo "$(date "+%Y-%m-%d"): download $ora_z1 "
  { curl -s ftp://$FTP/oracle/p10404530_112030_Linux-x86-64_1of7.zip -o $ora_z1;wait; } || { echo "$(date "+%Y-%m-%d"): download $ora_zip1 failed"; exit; }
  { unzip -o  -d  $ora_DIR $ora_z1 >/dev/null 2>&1;wait; } || { echo "$(date "+%Y-%m-%d"): unzip $ora_z1  failed"; exit; }
  fi
  if [ -e $ora_z2 ] ;then
  echo "$(date "+%Y-%m-%d"): found $ora_z2 "
  else
  echo "$(date "+%Y-%m-%d"): download $ora_z2 "
  { curl -s ftp://$FTP/oracle/p10404530_112030_Linux-x86-64_1of7.zip -o $ora_z2;wait; } || { echo "$(date "+%Y-%m-%d"): download $ora_zip2 failed"; exit; }
  { unzip -o -d $ora_DIR $ora_z2 >/dev/null 2>&1;wait; } || { echo "$(date "+%Y-%m-%d"): unzip $ora_z2  failed"; exit; }
  fi
  silent_check
  cd  $ora_DIR >/dev/null 2>&1
  #{"./database/runInstaller -silent -force -responseFile  $ora_DIR/database/response/db_install.rsp > $ora_DIR/oinstall.log" >/dev/null 2>&1;wait;} || { echo "install oracle failed"; exit; }
  { bash -c "./database/runInstaller -silent -force -responseFile  $ora_DIR/database/response/db_install.rsp > $ora_DIR/oinstall.log">/dev/null 2>&1;wait; } || { echo "install weblogic failed"; exit; }
  wait
  sleep 1m
  trap - INT TERM EXIT
  grep "Successfully Setup Software." $ora_DIR/oinstall.log
  echo "oracle_ins  is ok"
  }
  #clean_all
  function clean_all(){
  rm -rf $ora_DIR/database
  #rm -rf $ora_DIR/oinstall.log >/dev/null 2>&1
  rm -rf $ora_DIR/checkpoints >/dev/null 2>&1
  rm -rf $ora_DIR/diag >/dev/null 2>&1
  rm -rf $ora_DIR/oraInventory  >/dev/null 2>&1
  echo "clean_all"
  }
  #rollback!
  function rollback() {
  if [ -e $ora_HOME ]; then
  rm -rf $ora_HOME/.*
  echo  "rollback!"
  fi
  exit
  }
  sys_check
  user_check
  evn_check
  oracle_ins
  clean_all


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-564068-1-1.html 上篇帖子: Oracle数据库启动和关闭 下篇帖子: Oracle之行列转置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表