静默安装oracle 11g 单实例 for linux x64,含环境配置脚本

静默安装oracle 11g 单实例 for linux x64,含环境配置脚本

环境准备:

操作系统为Redhat 6.4 64位操作系统

数据库为oracle 11.2.0.4单实例数据库 for linux x64

在操作系统根目录下创建文件夹software,将所有的需要的镜像上传进去,其中包括数据库的安装包及rpm安装包合集

rpm合集下载地址为https://download.csdn.net/download/wsyzs566/10944930

静默安装oracle 11g 单实例 for linux x64,含环境配置脚本                       静默安装oracle 11g 单实例 for linux x64,含环境配置脚本

解压安装镜像及rpm安装包

配置数据库安装前的环境

开始进行数据库安装前的环境配置,在software文件夹下创建一个脚本,这里命名为prepare.sh,将下面的语句复制进去:

#!/bin/bash
# oracle 11g R2 for linux 安装辅助脚本
# Redkey
# version 1.3
# date 2017.10.19
# 定义常量
SYSCTL=/etc/sysctl.conf
LIMITS=/etc/security/limits.conf
PAM=/etc/pam.d/login
PROFILE=/etc/profile
BASH_PROFILE=/home/oracle/.bash_profile

# 添加oracle用户,添加oracle用户所属组oinstall及附加组dba
ouseradd()
{
if [[ `grep "oracle" /etc/passwd` != "" ]];then
userdel -r oracle
fi
if [[ `grep "dba" /etc/group` = "" ]];then
groupadd dba
fi
useradd oracle -g dba && echo $1 |passwd oracle --stdin
if [ $? -eq 0 ];then
echo -e "\n\e[1;36m oracle's password updated successfully --- OK! \e[0m"
else
echo -e "\n\e[1;31m oracle's password set faild. --- NO!\e[0m"
fi
}

# 设置内核参数
kernelset()
{
cp $SYSCTL{,.bak} && cat <<EOF >>$SYSCTL
# ORACLE Settings
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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 = 1048586
EOF
if [ $? -eq 0 ];then
echo -e "\n\e[1;36m kernel parameters updated successfully --- OK! \e[0m"
fi
sysctl -p
}

#设置oracle资源限制
oralimit()
{
cp $LIMITS{,.bak} && cat <<EOF >> $LIMITS
oracle    soft    nproc   2047
oracle    hard    nproc   16384
oracle    soft    nofile  1024
oracle    hard    nofile  65536
EOF
if [ $? -eq 0 ];then
echo -e "\n\e[1;36m $LIMITS updated successfully ... OK! \e[0m"
fi
}

#设置login文件
setlogin()
{
cp $PAM{,.bak} && cat <<EOF >>$PAM
session    required     /lib/security/pam_limits.so
EOF
if [ $? -eq 0 ];then
echo -e "\n\e[1;36m $PAM updated successfully ... OK! \e[0m"
fi
}

#设置profile文件
setprofile()
{
cp $PROFILE{,.bak} && cat <<EOF >>$PROFILE
if [ $USER = "oracle" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
              ulimit -p 16384
              ulimit -n 65536
        else
              ulimit -u 16384 -n 65536
        fi
fi
EOF
if [ $? -eq 0 ];then
echo -e "\n\e[1;36m $PROFILE updated successfully ... OK! \e[0m"
fi
}

#设置oracle的profile文件
setbash_profile()
{
cp $BASH_PROFILE{,.bak} && cat <<EOF >> $BASH_PROFILE
# Oracle Settings
umask 022
ORACLE_BASE=/oracle/app
ORACLE_HOME=/oracle/app/product/11.2.0/db_1/
ORACLE_SID=orcl
ORA_NLS33=/oracle/app/product/11.2.0/db_1/ocommon/nls/admin/data
LD_LIBRARY_PATH=/oracle/app/product/11.2.0/db_1/lib:$ORACLE_HOME/network/lib:.
NLS_LANG=American_america.zhs16gbk
PATH=/usr/ccs/bin:/oracle/app/product/11.2.0/db_1/bin:$PATH
CLASSPATH=/oracle/app/product/11.2.0/db_1/product/jlib:$ORACLE_HOME/jlib:.
LIBPATH=/oracle/app/product/11.2.0/db_1/jdk/jre/bin:/oracle/app/product/11.2.0/db_1/jdk/bin/classic:/oracle/app/product/11.2.0/db_1/lib
export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID ORA_NLS33 LD_LIBRARY_PATH
export NLS_LANG CLASSPATH LIBPATH
EOF
if [ $? -eq 0 ];then
echo -e "\n\e[1;36m $BASH_PROFILE updated successfully ... OK! \e[0m"
fi
. $BASH_PROFILE
}

#系统环境检查
oscheck()
{
#查看内存大小是否大于1G
echo -e "\n check MEM Size ..."
if [ `cat /proc/meminfo | grep MemTotal | awk '{print $2}'` -lt 1048576 ];then
echo -e "\n\e[1;33m Memory Small \e[0m"
exit 1
else
echo -e "\n\e[1;36m Memory checked PASS \e[0m"
fi

#查看tmp空间大小
echo -e "\n check tmpfs Size ..."
cp /etc/fstab{,.bak}
while true;do
if [ `df | awk '/tmpfs/ {print $2}'` -lt 1048576 ];then
echo -e "\n\e[1;33m tmpfs Smaill \e[0m"
sed -i '/tmpfs/s/defaults/defaults,size=1G/' /etc/fstab && mount -o remount /dev/shm
if [ $? != 0 ];then
i=i+1
if [ $i -eq 3 ];then
echo -e "\n\e[1;31m set tmpfs faild. \e[0m"
exit 3
fi
else
echo -e "\n\e[1;36 tmpfs updated successfully. \e[0m"
break
fi
else
echo -e "\n\e[1;36m tmpfs checked PASS \e[0m"
break
fi
done
}

#停止防火墙IPTABLES
service iptables stop
chkconfig iptables off
#关闭SELINUX
cp /etc/selinux/config{,.bak} && sed -i '/SELINUX/s/enforcing/disabled/;/SELINUX/s/permissive/disabled/' /etc/selinux/config
setenforce 0

#执行以上函数
kernelset
oralimit
setlogin
setprofile
echo -e "\n\e[1;33m please input oracle's user passwd: \e[0m"
read oraclepw
ouseradd $oraclepw
setbash_profile
mkdir -p /oracle/arch /oracle/oradata /oracle/oraInventory /oracle/app && mkdir -p /oracle/app && chown -R oracle:dba /home/oracle && chown -R oracle:dba /oracle && chmod -R 755 /oracle
rpm -ivh /software/rpmPackages/pdksh-5.2.14-30.x86_64.rpm
rpm -ivh /software/rpmPackages/libstdc++-4.4.7-3.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/libstdc++-devel-4.4.7-3.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/sysstat-9.0.4-20.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/unixODBC-2.2.14-12.el6_3.x86_64.rpm
rpm -ivh /software/rpmPackages/unixODBC-devel-2.2.14-12.el6_3.x86_64.rpm
rpm -ivh /software/rpmPackages/numactl-2.0.7-6.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/numactl-devel-2.0.7-6.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/libgcc-4.4.7-3.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/kernel-headers-2.6.32-358.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/glibc-headers-2.12-1.107.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/glibc-devel-2.12-1.107.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/libgomp-4.4.7-3.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/ppl-0.10.2-11.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/mpfr-2.4.1-6.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/cpp-4.4.7-3.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/gcc-4.4.7-3.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/libaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/gcc-c++-4.4.7-3.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/libaio-devel-0.3.107-10.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/elfutils-libelf-devel-0.152-1.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm
rpm -ivh /software/rpmPackages/libao-devel-0.8.8-7.1.el6.x86_64.rpm  
rpm -q binutils gcc  gcc-c++ glibc  glibc-devel pdksh libaio  libaio-devel   libstdc++  libstdc++-devel   libgcc libstdc++-devel  make   numactl-devel   sysstat  unixODBC  unixODBC-devel  compat-libstdc++-33 elfutils-libelf-devel
unzip -d /software /software/p13390677_112040_Linux-x86-64_1of7.zip
unzip -d /software /software/p13390677_112040_Linux-x86-64_2of7.zip
chown -R oracle:dba /software/database

之后使用root用户执行脚本sh prepare.sh,在执行过程中会提示输入oracle用户的密码。

开始安装数据库软件

切换到oracle用户,执行静默安装数据库软件的脚本,使用vi编辑器编辑一个文件vi db_install.rsp,脚本内容如下:

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=linux
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/oracle/inventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/oracle/app/product/11.2.0/db_1/
ORACLE_BASE=/oracle/app
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=dba
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
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=
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

执行安装脚本的语句是

cd /software/database/

./runInstaller -silent -responseFile /software/db_install.rsp

在执行脚本后本机有一个警告,是因为swap空间不太够,这里可以忽略,会继续进行下一步,可以另外克隆一个窗口,查看日志

tail -f /oracle/inventory/logs/installActions2018-11-06_02-09-50AM.log

在安装快要结束的时候需要执行两个脚本,克隆另一个窗口使用root用户执行

执行完回车完成数据库软件的安装

静默安装oracle 11g 单实例 for linux x64,含环境配置脚本

静默配置数据库监听

执行脚本开始静默安装监听,因为是一路默认,不需要修改静默安装的脚本

netca -silent -responsefile /software/database/response/netca.rsp

静默安装oracle 11g 单实例 for linux x64,含环境配置脚本

静默安装数据库实例

编辑静默安装数据库实例的脚本,vi dbca.rsp,脚本内容如下

[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "orcl"
SID = "orcl"
TEMPLATENAME = "General_Purpose.dbc"
STORAGETYPE=FS
DATAFILEDESTINATION =/oracle/oradata
#RECOVERYAREADESTINATION=/oracle/app/flash_recovery_area
CHARACTERSET = "ZHS16GBK"
NATIONALCHARACTERSET= "AL16UTF16"
LISTENERS=LISTENER
TOTALMEMORY = "4000"
SYSPASSWORD = "oracledba"
SYSTEMPASSWORD = "oracledba"

执行脚本开始安装数据库实例的安装

dbca -silent -responsefile /software/dbca.rsp

静默安装oracle 11g 单实例 for linux x64,含环境配置脚本

至此,oracle单实例数据库安装完成,顺利的话,整个流程下来半小时左右,比图形化安装大大缩短了安装时间。