暂无图片
暂无图片
3
暂无图片
暂无图片
2
暂无图片

如何在半个工作日内完成20套以上Oracle DB的部署?

原创 John2020 2021-06-20
591

导读

作者:杨漆
16年关系型数据库管理,从oracle 9i 、10g、11g、12c到Mysql5.5、5.6、5.7、8.0 到TiDB获得3个OCP、2个OCM;运维路上不平坦,跌过不少坑、熬过许多夜。把工作笔记整理出来分享给大伙儿,希望帮到大家少走弯路、少熬夜。

最近新项目建设需要(外部开发商程序限制),要求部署20套独立Oracle数据库(缘何如此设计不详,接到任务只能执行)。
1.如果按照官方文档一台一台开图形化方式部署,20套DB的搭建初步预估会消耗掉一位DBA一周的时间。
2.如果采用静默安装+手动部署的方式,也将消耗2~3个工作日。
提问:如何提高产能,让一位DBA在半天内完成20套及以上Oracle DB的部署呢(甚至DBA可以不用参与,主机工程师就能轻松搞定此项工作)?
答:调试一套有效的脚本,一键安装,自动化批量部署。
哈哈 有了它,仅需一位主机工程师在1个工作日便能搞定上百台Oracle DB的安装部署,人均产能大大提升(且减少人为操作失误概率),企业产能、效率得到飞速提升!
分享一套我调试好的自动化脚本如下,希望可以帮到大家:
(仅抛砖引玉,各位大拿可在此脚本基础上根据自身环境、设备硬件情况做调整、二次开发)

#!/bin/sh echo "start Oracle install !" ## ifconfig eth0|grep 'inet addr'|awk -F ":" '{print $2}'|awk '{print $1}' ##取本机IP地址 ## ifconfig ens192|awk -F '[ ]+' 'NR==2 {print$3}' ##取本机IP地址 ## 配置 Ip 和 hostname自解析 cat >>/etc/hosts<<EOF 127.0.0.1 `hostname` ::1 `hostname` `ifconfig ens192|grep 'inet'|awk '{print $2}'` `hostname` EOF ## redhat7.2 需要打的包 (不同版本需要打的OS包不同,需根据实际情况调整) yum -y install autoconf yum -y install automake yum -y install binutils yum -y install binutils-devel yum -y install bison yum -y install cpp yum -y install dos2unix yum -y install ftp yum -y install gcc yum -y install gcc-c++ yum -y install lrzsz yum -y install python-devel yum -y install compat-db* yum -y install compat-gcc-34 yum -y install compat-gcc-34-c++ yum -y install compat-libcap1 yum -y install compat-libstdc++-33 yum -y install compat-libstdc++-33.i686 yum -y install glibc-* yum -y install glibc-*.i686 yum -y install libXpm-*.i686 yum -y install libXp.so.6 yum -y install libXt.so.6 yum -y install libXtst.so.6 yum -y install libXext yum -y install libXext.i686 yum -y install libXtst yum -y install libXtst.i686 yum -y install libX11 yum -y install libX11.i686 yum -y install libXau yum -y install libXau.i686 yum -y install libxcb yum -y install libxcb.i686 yum -y install libXi yum -y install libXi.i686 yum -y install libXtst yum -y install libstdc++-docs yum -y install libgcc_s.so.1 yum -y install libstdc++.i686 yum -y install libstdc++-devel yum -y install libstdc++-devel.i686 yum -y install libaio yum -y install libaio.i686 yum -y install libaio-devel yum -y install libaio-devel.i686 yum -y install ksh yum -y install libXp yum -y install libaio-devel yum -y install numactl yum -y install numactl-devel yum -y install make yum -y install sysstat yum -y install unixODBC yum -y install unixODBC-devel yum -y install elfutils-libelf-devel yum -y install redhat-lsb-core ## 解压oracle12c安装软件(软件可官网下载,都是正版) cd /root/ unzip linuxx64_12201_database.zip ## 创建用户、目的地址、并授予权限 /usr/sbin/groupadd oinstall /usr/sbin/groupadd dba /usr/sbin/useradd -g oinstall -G dba oracle chown -R oracle:oinstall /root/ mkdir -p /u01/app/oraInventory mkdir -p /u01/app/oracle/product chown -R oracle:oinstall /u01/app/ chmod -R 775 /u01/app ##设置OS级 Oracle用户密码 echo "oracle" |passwd --stdin oracle echo inventory_loc=/u01/app/oraInventory >>/etc/oraInst.loc echo inst_group=oinstall >>/etc/oraInst.loc ##关闭selinux 和 防火墙 cat >>/etc/sysconfig/selinux<< EOF SELINUX=disabled EOF service iptables stop ## 16G 内存的内核参数设置(结合自己机器实际情况进行调整): cat >>/etc/sysctl.conf<< EOF # 16G Memory OLTP fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 4194300 kernel.shmmax = 13743895347 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 EOF sysctl -p ##用户限制 cat >>/etc/security/limits.conf<< EOF * soft nproc 4096 root soft nproc unlimited oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 10240 oracle hard memlock 134217728 oracle soft memlock 134217728 EOF ## 修改用户登陆限制 echo "session required /lib/security/pam_limits.so">>/etc/pam.d/login echo "session required pam_limits.so">>/etc/pam.d/login ##配置环境变量 su - oracle cat >>~/.bash_profile<< EOF # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin umask 022 PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/sbin LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product ORACLE_SID=orcl LD_LIBRARY_PATH=$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH PATH=$ORACLE_HOME/bin:$PATH export PATH LD_LIBRARY_PATH export ORACLE_BASE ORACLE_HOME ORACLE_SID export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export LC_ALL=en_US.UTF-8 export PATH EOF chown oracle:oinstall -R /root/ cd /root/database ##安装数据库软件 + DB ./runInstaller -force -silent -responseFile /root/db.rsp ##在root下执行 exit /usr/local/oraInventory/orainstRoot.sh /root/database/runInstaller -executeConfigTools -responseFile /root/db.rsp -silent ## 安装监听 su - oracle netca /silent /responsefile /root/netca.rsp lsnrctl start ## 安装DB,此步可省略 dbca -silent -createDatabase -responseFile /root/dbca.rsp ##设置开机自启动 sed -i 's/db_1:N/db_1:Y/g' /etc/oratab sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/g' $ORACLE_HOME/bin/dbstart sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/g' $ORACLE_HOME/bin/dbshut cat >>/etc/rc.d/rc.local<<EOF su oracle -lc “/u01/app/oracle/product/12/db_1/bin/lsnrctl start” su oracle -lc “/u01/app/oracle/product/12/db_1/bin/dbstart” EOF chmod +x /etc/rc.d/rc.local echo "Oracle Success installed !" echo "Oracle Success installed !" echo "Oracle Success installed !"
复制

备注:新server上需要提前准备好的4个基础工作:

  • 1.数据库安装包 linuxx64_12201_database.zip
  • 2.yum挂载好OS镜像
  • 3.oracle_singleDB_auto_install.sh自动化部署脚本
  • 4.静默应答文件

123凡科快图.gif

最后修改时间:2021-07-29 10:31:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

gululu79
暂无图片
3年前
评论
暂无图片 0
单机还好,你要是rac就牛了
3年前
暂无图片 点赞
1
John2020
暂无图片
3年前
回复
暂无图片 0
下次调试好rac的自动化脚本分享给大家,哈哈哈!
3年前
暂无图片 点赞
回复