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

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

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

说明:

  • 该脚本包含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 expect

rpm -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.conf

sysctl -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.conf

Falg=`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
fi

if 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} ]; then
  sed -i ${Falg}s/enforcing/permissive/g /etc/selinux/config
  echo "INFO >>>>>> SELinux配置文件已修改,现配置如下:"
  cat /etc/selinux/config | grep -v "#" |grep -v '^$'
  setenforce 0
  echo "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 oracle

echo

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_1

chown -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 programs
 
PATH=\$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\" ]; then
  if [ \$SHELL = \"/bin/ksh\" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi
umask 022" > /home/oracle/.bash_profile
echo

11、获取安装包、补丁包

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

资源名称用途
p13390677_112040_Linux-x86-64_1of7.zipOracle安装包
p13390677_112040_Linux-x86-64_2of7.zipOracle安装包
p31537677_112040_Linux-x86-64.zipDB 11.2.0.4 补丁
p31668908_112040_Linux-x86-64.zipOJVM补丁
p6880880_112000_Linux-x86-64.zipOPatch工具

注:麻烦关注 醒狮运维 公众号,回复 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.zip

cd /home/oracle/31537677
\$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
EOF

su - oracle << EOF
cd /home/oracle/31537677
source ~/.bash_profile
\$ORACLE_HOME/OPatch/opatch apply -silent
EOF

su - 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 ./
EOF

su - 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.rsp

dbca -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.ora

lsnrctl stop
lsnrctl start

EOF

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

关注醒狮运维公众号,了解更多运维知识及漏洞信息!
在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
安装Linux虚拟机可以使用多种虚拟化软件,比如VirtualBox和VMware。以下是一个基本的手把手指南来安装Linux虚拟机: 1. 首先,下载并安装所选的虚拟化软件。你可以在VirtualBox的官方网站(https://www.virtualbox.org/)或VMware的官方网站(https://www.vmware.com/)上找到相应的安装程序。 2. 一旦安装完成,打开虚拟化软件。在VirtualBox中,点击"新建"创建一个新的虚拟机;在VMware中,点击"创建新的虚拟机"。 3. 在创建虚拟机的过程中,你需要选择操作系统类型和版本。如果你打算安装Linux发行版,选择对应的类型(例如Ubuntu、Fedora等)和版本。 4. 接下来,你需要分配虚拟机的内存和硬盘空间。根据你的需求和系统配置,选择合适的数值。通常来说,至少分配给虚拟机2GB的内存和20GB的硬盘空间是合理的。 5. 在磁盘选项中,选择创建一个新的虚拟硬盘,并为其分配一定的空间。 6. 完成上述设置后,你将看到一个概述页面,检查并确认设置无误。点击"创建"或"完成"按钮以开始创建虚拟机。 7. 一旦虚拟机创建完成,你需要下载并准备一个Linux发行版的ISO镜像文件。这些ISO镜像文件可以在Linux发行版的官方网站上获取。 8. 在虚拟机软件中,选择你刚刚创建的虚拟机,并点击"启动"按钮(VirtualBox)或"电源"按钮(VMware)。 9. 在虚拟机启动时,会要求选择一个启动介质。选择之前下载的Linux发行版ISO镜像文件。 10. 开始安装Linux发行版。按照安装向导的指示进行操作,包括选择语言、键盘布局、分区设置等。根据不同的发行版,安装过程和选项可能会有所不同。 11. 完成安装后,重启虚拟机并进入新安装Linux系统。 这样,你就成功地安装Linux虚拟机。你可以在虚拟机中进行各种操作、学习和开发,而不会对物理设备产生任何影响。希望这个指南对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醒狮运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值