手把手教学Linux下oracle11g自动化安装脚本编写

  • 产品:Oracle
  • 版本:11.2.0.4
  • 环境:Centos7

文章目录

  • 手把手教学Linux下oracle11g自动化安装脚本编写
    • 0、脚本参数变量初始化
    • 1、配置hosts主机解析文件
    • 2、安装依赖包
    • 3、配置操作系统内核参数
    • 4、配置操作系统资源限制
    • 5、取消透明大页
    • 6、禁用SELINUX及防火墙
    • 7、创建用户和组
    • 8、修改Oracle密码
    • 9、创建目录
    • 10、设置环境变量
    • 11、获取安装包、补丁包
    • 12、解压安装包
    • 13、获取静默安装脚本
    • 14、执行静默安装
    • 15、根据安装提示以root用户执行相关脚本
    • 16、补丁
    • 17、创建数据库
    • 18、注册监听

说明:

  • 该脚本包含oracle安装前依赖安装、操作系统资源配置、oracle数据库软件安装、数据库补丁、实例创建、监听注册;
  • 在部署过程中数据库服务名、实例名、操作系统oracle用户皆为自定义,因此作为参数传入;
  • 在未做配置的操作系统上执行该脚本可得到即可使用的oracle数据库,安装时长大约十分钟。
  • 该脚本在需root用户下执行。

0、脚本参数变量初始化

#!/bin/bash
# 传入第一个参数为SID
SID=$1
# 传入第二个参数为服务名
GDBNAME=$2
# 传入第三个参数为操作系统oracle用户密码
oraclepwd=$3
# 定义ORACLE_HOME变量,防止后续读不到环境变量导致安装失败
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1

1、配置hosts主机解析文件

echo "INFO>>>配置hosts主机解析文件"
# 获取本机ip,注意查看自己使用的网卡是否为eth0,不是的话需要替换
ipaddr=`ip a | grep -w "inet" | grep eth0 |sed 's/^.*inet //g'|sed 's/\/[0-9][0-9].*$//g'`
hostname=`hostname`
echo "${ipaddr} ${hostname}" >> /etc/hosts
echo

2、安装依赖包

echo "INFO>>>安装依赖包"
yum -y install binutils compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat cpp glibc-headers mpfr unixODBC unixODBC-devel glibc-headers psmisc unzip expectrpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" binutils compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat cpp glibc-headers mpfr unixODBC unixODBC-devel glibc-headers
echo

3、配置操作系统内核参数

echo "INFO>>>配置操作系统内核参数"
maxmemory=`free | awk 'NR==2{print}' | awk '{print $2}'`
maxmemoryb=`expr ${maxmemory} \* 1024`
shmallb=`expr ${maxmemoryb} / 4096`
echo "kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = ${shmallb}
kernel.shmmax = ${maxmemoryb}
kernel.panic_on_oops = 1
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
net.ipv4.ip_local_port_range = 9000 65500
fs.file-max = 6815744
fs.aio-max-nr = 1048576" >> /etc/sysctl.confsysctl -p
echo

4、配置操作系统资源限制

echo "INFO>>>配置操作系统资源限制"
echo "oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock unlimited
oracle hard memlock unlimited" >> /etc/security/limits.confFalg=`cat -n /etc/pam.d/login | grep -v "#" |grep "session" | grep "required" | grep "pam_loginuid.so" |awk '{print $1}'`
sed -i "$Falg i session required pam_limits.so" /etc/pam.d/login
echo

5、取消透明大页

echo "INFO>>>取消透明大页"
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag# 开机执行
echo "
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fiif test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi" >> /etc/rc.d/rc.local
chmod 755 /etc/rc.d/rc.local

6、禁用SELINUX及防火墙

echo "INFO>>>禁用SELINUX及防火墙"
Falg=`cat -n /etc/selinux/config | grep -v "#" |grep "SELINUX=" | grep "enforcing" | awk '{print $1}'`
if [ ${Falg} ]; thensed -i ${Falg}s/enforcing/permissive/g /etc/selinux/configecho "INFO >>>>>> SELinux配置文件已修改,现配置如下:"cat /etc/selinux/config | grep -v "#" |grep -v '^$'setenforce 0echo "INFO >>>>>> SELinux已临时换成宽容模式"
fi# 如果安装的是单实例,可开启防火墙,开放对应端口即可
systemctl stop firewalld.service
echo

7、创建用户和组

echo "INFO>>>创建用户和组"
/usr/sbin/groupadd -g 5000 oinstall
/usr/sbin/groupadd -g 5004 dba
/usr/sbin/groupadd -g 5005 oper
/usr/sbin/useradd -u 5002 -g oinstall -G oper,dba -m -d /home/oracle -s /bin/bash oracleecho

8、修改Oracle密码

echo $oraclepwd | passwd oracle --stdin > /dev/null 2>&1
echo

9、创建目录

echo "INFO>>>创建目录"
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/11.2.0.4/db_1chown -R oracle:oinstall /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oracle
echo

10、设置环境变量

echo "INFO>>>设置环境变量"
echo "# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programsPATH=\$PATH:\$HOME:/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:.
export PATH
export ORACLE_SID=$SID
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0.4/db_1
export ORACLE_TERM=vt100
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export NLS_LANG=american_america.zhs16gbk
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/JRE/lib:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT='yyyy-mm-dd HH24:MI:SS'
export DISPLAY=localhost:0.0
export ORA_NLS33=\$ORACLE_HOME/ocommon/nls/admin/data
export DISABLE_HUGETLBFS=1
export LANG=C
if [ \$USER = \"oracle\" ]; thenif [ \$SHELL = \"/bin/ksh\" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fi
fi
umask 022" > /home/oracle/.bash_profile
echo

11、获取安装包、补丁包

说明:
此次获取oracle11g的安装包和补丁包,小狮子的做法是将安装包和补丁包放到内网服务器上,然后通过Nginx代理,成为一个软件库,需要时直接拉取即可,请根据自己的需求调整脚本,资源对应关系如下:

资源名称 用途
p13390677_112040_Linux-x86-64_1of7.zip Oracle安装包
p13390677_112040_Linux-x86-64_2of7.zip Oracle安装包
p31537677_112040_Linux-x86-64.zip DB 11.2.0.4 补丁
p31668908_112040_Linux-x86-64.zip OJVM补丁
p6880880_112000_Linux-x86-64.zip OPatch工具

注:麻烦关注 醒狮运维 公众号,回复 oracle 即可下载资源。

echo "INFO>>>获取安装包、补丁包"
wget -P /home/oracle/ http://101.10.35.181:18106/download/oracle/p13390677_112040_Linux-x86-64_1of7.zip
sleep 10s
wget -P /home/oracle/ http://101.10.35.181:18106/download/oracle/p13390677_112040_Linux-x86-64_2of7.zip
sleep 10s
wget -P /home/oracle/ http://101.10.35.181:18106/download/oracle/p31537677_112040_Linux-x86-64.zip
sleep 10s
wget -P /home/oracle/ http://101.10.35.181:18106/download/oracle/p31668908_112040_Linux-x86-64.zip
sleep 10s
wget -P /home/oracle/ http://101.10.35.181:18106/download/oracle/p6880880_112000_Linux-x86-64.zip
EOF

12、解压安装包

su - oracle << EOF
echo "INFO>>>解压安装包"
cd /home/oracle
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip

13、获取静默安装脚本

source ~/.bash_profile
echo "INFO>>>获取静默安装脚本"
wget -P /home/oracle/database/response/ http://101.10.35.181:18106/download/oracle/db_install_simple.rsp
cd /home/oracle/database/response/
sleep 10s
sed -i s/testdb/${hostname}/g /home/oracle/database/response/db_install_simple.rsp

静默安装配置文件db_install_simple.rsp 内容如下,小狮子将脚本上传内网软件库,安装时拉取,大家可根据实际情况修改脚本。

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=testdb
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

14、执行静默安装

echo "INFO>>>执行静默安装"
/home/oracle/database/runInstaller -silent -ignorePrereq -ignoreSysPreReqs -ignoreDiskWarning -responseFile /home/oracle/database/response/db_install_simple.rsp
sleep 3m
echo -e "\n"EOF

说明: 第12步至14步皆为oracle用户执行,清注意su - oracle << EOF … EOF不能去掉。

15、根据安装提示以root用户执行相关脚本

echo "INFO>>>以root用户执行相关脚本"
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0.4/db_1/root.sh

16、补丁

说明: $ORACLE_HOME中的$需要转义,不然获取到的值为脚本中ORACLE_HOME的值,而不是oracle用户环境变量的值,因此我们之前定义ORACLE_HOME变量,就是防止忘记加转义符获取不到路径。

su - oracle << EOF
echo "INFO>>>补丁"
source ~/.bash_profile
cd /home/oracle/
mv \$ORACLE_HOME/OPatch \$ORACLE_HOME/Opatchbak
unzip p6880880_112000_*.zip -d $ORACLE_HOME/
unzip p31537677_112040_Linux-x86-64.zipcd /home/oracle/31537677
\$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
EOFsu - oracle << EOF
cd /home/oracle/31537677
source ~/.bash_profile
\$ORACLE_HOME/OPatch/opatch apply -silent
EOFsu - oracle << EOF
cd /home/oracle/
source ~/.bash_profile
mv /home/oracle/PatchSearch.xml /home/oracle/PatchSearch.xml.bak
unzip p31668908_112040_Linux-x86-64.zip
cd /home/oracle/31668908
\$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
EOFsu - oracle << EOF
cd /home/oracle/31668908
source ~/.bash_profile
\$ORACLE_HOME/OPatch/opatch apply -silent
EOF

17、创建数据库

su - oracle << EOF
echo "INFO>>>创建数据库"
source ~/.bash_profile
wget -P /home/oracle/database/response/ http://10.10.5.18:18106/download/oracle/dbca_xs.rsp
sed -i 78s/orcl/${GDBNAME}/g /home/oracle/database/response/dbca_xs.rsp
sed -i 170s/orcl/${SID}/g /home/oracle/database/response/dbca_xs.rspdbca -silent -createDatabase -responseFile /home/oracle/database/response/dbca_gy.rsp
EOF

dbca_xs.rsp 内容如下,请大家根据自己需求配置与脚本

[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "orcl"
SID = "orcl"
TEMPLATENAME = "General_Purpose.dbc"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
CHARACTERSET = "ZHS16GBK"
MEMORYPERCENTAGE = "40"
AUTOMATICMEMORYMANAGEMENT = "FALSE"
[createTemplateFromDB]
SOURCEDB = "myhost:1521:orcl"
SYSDBAUSERNAME = "system"
TEMPLATENAME = "My Copy TEMPLATE"
[createCloneTemplate]
SOURCEDB = "orcl"
TEMPLATENAME = "My Clone TEMPLATE"
[DELETEDATABASE]
SOURCEDB = "orcl"
[generateScripts]
TEMPLATENAME = "New Database"
GDBNAME = "orcl11.us.oracle.com"
[CONFIGUREDATABASE]
[ADDINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
NODELIST=
SYSDBAUSERNAME = "sys"
[DELETEINSTANCE]
DB_UNIQUE_NAME = "orcl11g.us.oracle.com"
INSTANCENAME = "orcl11g"
SYSDBAUSERNAME = "sys"

18、注册监听

su - oracle << EOF
source ~/.bash_profile
echo "INFO>>>注册监听"
netca -silent -responsefile /home/oracle/database/response/netca.rsp
EOF
# read -p "按任意键继续。。。"
su - oracle << EOF
echo "SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME=${GDBNAME})(ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1)(SID_NAME= $1)))" >> $ORACLE_HOME/network/admin/listener.oralsnrctl stop
lsnrctl startEOF

到此脚本已编写完成,本教程更多的是分享编写脚本的思路与脚本的写法,让大家少走弯路,如有其他想法请留言我们一起探讨。

关注醒狮运维公众号,了解更多运维知识及漏洞信息!

手把手教学Linux下oracle11g自动化安装脚本编写相关推荐

  1. linux编译安装jpeg,Linux下JPEG库安装脚本(转)

    Linux下JPEG库安装脚本(转)[@more@]该脚本用于在Linux下安装JPEG库,在安装GD库的时候如果没有JPEG库,GD将不能生成JPEG格式的图象. 作者: 何志强#----where ...

  2. linux使用oracal11g详细过程,很给力的linux下Oracle11g的安装过程及图解.doc

    很给力的linux下Oracle11g的安装过程及图解 我的linux版本是centos5.5,内核版本是2.6.18-194.el5 ,linux下安装oracle系统最好是1G内存,2G的swap ...

  3. 虚拟机Linux下Oracle11g客户端安装

    服务器:Windows Server 2008 Oracle数据库版本:Oracle11g 本机系统:Winows 7专业版 虚拟机:VMware Workstation 虚拟机系统:CentOs-6 ...

  4. Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务,集群部署,数据导出和恢复

    关于MongoDB的windows的 安装,可以参考: http://www.runoob.com/mongodb/mongodb-window-install.html 关于Linux的安装可以参考 ...

  5. Linux下Nagios的安装与配置

    Linux下Nagios的安装与配置 2017-03-23 17:40:20     来源:    点击:0 Nagios是企业普遍使用的最具影响力的网络信息监视系统之一,它可以动态监视指定的网络状态 ...

  6. linux下软件的安装[转]

    linux下软件的安装 先来看看Linux软件扩展名.软件后缀为.rpm最初是Red Hat Linux提供的一种包封装格式,现在许多Linux发行版本都使用:后缀为.deb是Debain Linux ...

  7. Linux 下Oracle11g 自动随系统启动

    Linux 下Oracle11g 自动随系统启动 安装完毕 Oracle 11g 每次都得手动启动 | 停止数据库(dbstart | dbshut).监听器(lsnrctl).控制台(emtcl). ...

  8. Linux下Apache自动监测重启脚本

    Linux下Apache自动监测重启脚本(智能化程度较高) 本站原创 [基于 署名-非商业使用-相同方式分享 2.5 协议,转载须注明链接] 本文所述apache监控脚本已经过VPS管理百科验证 由于 ...

  9. linux下的shell和脚本

    1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/s ...

最新文章

  1. 工作报告总是写不好?表达不准确?试试这个写作方法
  2. flannel源码分析--newSubnetManager
  3. Java消息系统简单设计与实现
  4. 反走样和OpenGL多重采样
  5. jstat命令(Java Virtual Machine Statistics Monitoring Tool
  6. 程序人生:软件测试 非技术性面试题【建议每个测试人观看】
  7. java 3000并发,还被面试官怼并发编程?来,吃点能量!Java并发编程技术
  8. DEVONthink Pro作为浏览器插件脚本,如何使用
  9. arduino雨滴传感器和舵机控制
  10. Linux 上部署 Seafile 9.0.x 专业版(Seafile Server端)——踩一路坑,溅一身水
  11. Oracle数据库安装教程--Oracle19c DataBase
  12. 大数据处理框架的类型、比较和选择
  13. JPEG 原理分析及 JPEG 解码器的调试
  14. Excel使用VBA自动调整插入图片大小到单元格
  15. 面向民航的航空数据链协议解析应用研究
  16. 从键盘输入一个英文字母,如果它是大写英文字母,则将其转换为小写英文字母,如果它是小写英文字母,则将其转换为大写英文字母,然后将它及其ASCII码值显示到屏幕上,如果不是英文字母,则不转换直接输出到屏幕
  17. shift删除的文件如何恢复?
  18. [笔记]通信与信号系统篇 通信原理、计算机网络、DSP基础知识
  19. 撩课python视频下载_2018年撩课学院-Python+人工智能/JavaEE/Web全栈/全学科下载_IT教程网...
  20. wine安装RTX、QQ、飞信

热门文章

  1. 干货:构建完美虚拟实验室的五大技巧
  2. Java 数据结构之二叉树
  3. lombok -- 爱的人爱的疯狂 恨的人恨的切齿
  4. 样本方差为何除以n-1
  5. php cms 是什么,phpcms是什么系统
  6. C/C++《数据结构大作业》
  7. 《每日一题》NO.24:BC-WC、OCV、AOCV分析的对比
  8. 荷兰计算机科学家Dijkstra
  9. Linux,RTEMS,eCos,uCOSII等
  10. 使用iOS多媒体框架实现视频倒放