Oracle 11GR2单机一键部署(sh脚本)

注:本脚本只适用于新系统用于安装ORACLE的初始化。请不要用于已存在ORACLE数据库的系统,如有问题,后果自负。

###########################################################################################
## Author:lucifer
## 本文档针对 Red Hat Enterprise Linux Server release 6.x 7.x 版本 进行 11GR2 单实例 部署的配置操作
## ORACLE VERSION:ORACLE 11204
###########################################################################################
##需要提前配置Public IP
##需要提前创建 /soft 目录,并提前将安装包上传到目录中
##运行:sh /soft/11204单机一键部署.sh |tee -a /soft/11204_install.log 可以追加日志
##需要创建 /soft 目录资料上传到目录中
## 0.  参数提前配置
## 1.  环境信息检查
## 2.  节点信息确认
## 3.  关闭防火墙
## 4.  关闭LINUX操作系统的SELINUX功能
## 5.  配置hosts文件
## 6.  安装必要的软件包
## 7.  关闭大页
## 8.  内核参数调整
## 9.  用户目录及Limit环境配置
## 10. Edit responseFile of db_install.rsp
## 11. 静默安装oracle软件
## 12. dbca静默建库
## 13. 启动监听
################################### 已验证 Linux 发行版 #############################
#rhel-server-6.8-x86_64
#rhel-server-6.9-x86_64
#CentOs-7.8-x86_64
#CentOS Linux release 7.6.1810 (Core)
#Red Hat Enterprise Linux Server release 7.9 (Maipo)
#ORACLE LINUX 6.8
################################### 请根据自己实际情况修改变量 ########################

一、主机配置

1、安装rhel-server-6.8-x86_64系统(最小化安装)

2、配置publicIP

[root@t11g ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
[root@t11g ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
HWADDR=08:00:27:47:B9:E2
TYPE=Ethernet
UUID=037f6cb7-441b-4244-a3b8-7f7148e1ccbe
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.56.100
NETMASK=25.255.255.0
[root@t11g ~]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Determining if ip address 192.168.56.100 is already in use for device eth0...
                                                           [  OK  ]

3、创建安装包目录/soft

mkdir /soft

二、参数配置

################################### 请根据自己实际情况修改变量 ########################
## 0. 参数提前配置
###################################################################################

## 1. IP规划
## public IP,根据实际需要修改
PublicIP=192.168.1.120

## 2. 主机名,根据实际需要修改
HostName=g11g

## 3. 数据库实例名称,根据实际需要修改
ORACLE_SIDTemp=orcl

## 4. 密码设置
## Oracle用户密码
oraclePasswd=oracle

###################################################################################
## 以下参数如无特殊需求,可以不改
###################################################################################

## 5. 字符集
##数据库字符集
CharacterSet=AL32UTF8

##国家字符集
NationalCharacterSet=AL16UTF16

## 7. 安装软件存放目录
Soft=/soft

# oracle 根目录
OracleHomeTemp=/u01

# 安装grid时候的:ORAINVENTORY
ORAINVENTORYTemp=/u01/app/oraInventory

## 安装database时候的:Oracle Base
ORACLE_BASETemp=/u01/app/oracle

# 安装database时候的:Oracle home
ORACLE_HOMETemp=/u01/app/oracle/product/11.2.0/db

# 数据文件位置
ORADATATemp=/oradata

## 8. 安装文件名称
#ORACLE安装包名称
OracleSoft1=p13390677_112040_Linux-x86-64_1of7.zip
OracleSoft2=p13390677_112040_Linux-x86-64_2of7.zip

#通过变量给字体加颜色
#这里定义一个c1()函数,后面如果想改变字体颜色直接调用即可
c1() {
  RED_COLOR='\E[1;31m'
  GREEN_COLOR='\E[1;32m'
  YELLOW_COLOR='\E[1;33m'
  BLUE_COLOR='\E[1;34m'
  PINK_COLOR='\E[1;35m'
  WHITE_BLUE='\E[47;34m'
  DOWN_BLUE='\E[4;36m'
  FLASH_RED='\E[5;31m'
  RES='\E[0m'

  #这里判断传入的参数是否不等于2个,如果不等于2个就提示并退出
  if [ $# -ne 2 ]; then
    echo "Usage $0 content {red|yellow|blue|green|pink|wb|db|fr}"
    exit
  fi

  case "$2" in
  red | RED)
    echo -e "${RED_COLOR}$1${RES}"
    ;;
  yellow | YELLOW)
    echo -e "${YELLOW_COLOR}$1${RES}"
    ;;
  green | GREEN)
    echo -e "${GREEN_COLOR}$1${RES}"
    ;;
  blue | BLUE)
    echo -e "${BLUE_COLOR}$1${RES}"
    ;;
  pink | PINK)
    echo -e "${PINK_COLOR}$1${RES}"
    ;;
  wb | wb)
    echo -e "${WHITE_BLUE}$1${RES}"
    ;;
  db | db)
    echo -e "${DOWN_BLUE}$1${RES}"
    ;;
  fr | fr)
    echo -e "${FLASH_RED}$1${RES}"
    ;;
  *)
    echo -e "请输入指定的颜色代码:{red|yellow|blue|green|pink|wb|db|fr}"
    ;;
  esac
}

##示例
##c1 "程序安装报错!" red
##c1 "程序安装成功!" green
##c1 "输出相关注释信息" blue

二、环境检查

###################################################################################
## 1. 环境信息检查
###################################################################################
# 请选择你的系统版本(RedHat6或者Redhat7)
read -p "系统版本为:6 or 7:" LinuxVer
if [ ${LinuxVer} -eq 6 ]; then
  c1 "您选择的系统是Linux发行版:6" blue
elif [ ${LinuxVer} -eq 7 ]; then
  c1 "您选择的系统是Linux发行版:7" blue
else
  c1 "输入错误,程序将推出" red
  exit
fi
echo
# 检查当前用户是否为root权限
if [ "$(id -u)" -eq 0 ]; then
  c1 "当前用户是root用户,将继续安装!" wb

else
  c1 "非root用户!" red
  exit 0
fi
echo
echo "##################################################################################"
echo
c1 "1. 环境信息检查:" red
echo
echo "##################################################################################"
echo
c1 "OS Release Info:" blue
echo
more /etc/system-release
echo
c1 "OS Kernel Info:" blue
uname -r
echo
cpu=$(grep "model name" /proc/cpuinfo | wc -l)
c1 "Cpu Info: " blue
echo
echo $cpu
echo
MemTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
memory=$(expr $MemTotal / 1048576)
##分配给ORACLE的内存,1/3
MemOracle=$(expr $MemTotal / 3072)
c1 "Memory Info: " blue
echo
echo $memory G
echo
SwapTotal=$(grep SwapTotal /proc/meminfo | awk '{print $2}')
swap=$(expr $SwapTotal / 1048576)
c1 "Swap Info: " blue
echo
echo $swap G
echo
c1 "ZONE:" blue
echo
if [ ${LinuxVer} -eq 6 ]; then
  more /etc/sysconfig/clock
else
  timedatectl | grep zone
fi
echo
c1 "Tmp Info:" blue
echo
df -h /tmp
echo
c1 "Disk Info:" blue
echo
df -h
echo
c1 "Network Info:" blue
echo
ip addr
echo
c1 "Transparent HugePages:" blue
echo
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
echo
#vm.min_free_kbytes,内存<=32G可以忽略设置,内存足够大时建议设置为512MB
c1 "vm.min_free_kbytes:" blue
echo
echo "vm.min_free_kbytes = $(cat /proc/sys/vm/min_free_kbytes) KB"
echo
c1 "vm.swappiness:" blue
echo
echo "vm.swappiness = $(cat /proc/sys/vm/swappiness)"
echo
c1 "Selinux:" blue
echo
grep ^SELINUX= /etc/selinux/config
echo
c1 "Firewalld:" blue
echo
if [ ${LinuxVer} -eq 6 ]; then
  service iptables status
  echo
  c1 "avahi-daemon:" blue
  echo
  service avahi-daemon status
else
  systemctl status firewalld | grep Active
  echo
  c1 "avahi-daemon:" blue
  echo
  systemctl status avahi-daemon
fi
echo
echo
sleep 1
# 输出提示,是否已设置静态公网IP并挂载光驱
echo
read -p "请确认您已经将PublicIP设置为静态公网IP并已挂载Linux安装镜像.按Enter键开始,Ctrl+C退出"
echo

三、安装前配置

###################################################################################
## 2. 防火墙关闭
###################################################################################

echo "###################################################################################"
echo
c1 "2. 防火墙关闭:" red
echo
echo "###################################################################################"
echo
if [ ${LinuxVer} -eq 6 ]; then
  service iptables stop
  chkconfig iptables off
  c1 "Iptables Check:" blue
  echo
  service iptables status
else
  systemctl stop firewalld
  systemctl disable firewalld
  systemctl stop avahi-daemon >/dev/null 2>&1
  systemctl disable avahi-daemon >/dev/null 2>&1
  c1 "Firewalld Check:" blue
  echo
  systemctl status firewalld | grep Active
  echo
  c1 "avahi-daemon Check:" blue
  echo
  systemctl status avahi-daemon

fi

###################################################################################
## 3. 关闭LINUX操作系统的SELINUX功能
###################################################################################
echo
echo "###################################################################################"
echo
c1 "3. 关闭LINUX操作系统的SELINUX功能 禁用ZEROCONF:" red
echo
echo "###################################################################################"
echo
##禁用SELINUX
SELINUX=$(grep ^SELINUX= /etc/selinux/config)
if [ $SELINUX != "SELINUX=disabled" ]; then
  cp /etc/selinux/config /etc/selinux/config.bak
  sed -i 's/^SELINUX=/#SELINUX=/g' /etc/selinux/config
  sed -i '$a SELINUX=disabled' /etc/selinux/config
else
  echo "SELINUX is already disabled"
fi
c1 "SELINUX Check:" blue
grep ^SELINUX= /etc/selinux/config

##禁用ZEROCONF
echo
NOZEROCONF=$(grep ^NOZEROCONF= /etc/sysconfig/network)
if [[ $NOZEROCONF != "" ]]; then
  cp /etc/sysconfig/network /etc/sysconfig/network.bak
  sed -i 's/^NOZEROCONF=/#NOZEROCONF=/g' /etc/sysconfig/network
  sed -i '$a NOZEROCONF=yes' /etc/sysconfig/network
else
  sed -i '$a NOZEROCONF=yes' /etc/sysconfig/network
fi
echo
c1 "NOZEROCONF Check:" blue
echo
grep ^NOZEROCONF= /etc/sysconfig/network

###################################################################################
## 4. 配置hosts文件和主机名
###################################################################################
echo "###################################################################################"
echo
c1 "4. 配置hosts文件和主机名:" red
echo
echo "###################################################################################"
HOSTNAME=$(grep "HOSTNAME" /etc/sysconfig/network)
if [ ${LinuxVer} -eq 6 ]; then
  if [[ $HOSTNAME != "" ]]; then
    echo "HOSTNAME is already set"
  else
    hostname ${HostName}
    sed -i "/HOSTNAME=/c HOSTNAME=${HostName}" /etc/sysconfig/network
  fi
else
  hostnamectl set-hostname $HostName
fi
echo
c1 "HOSTNAME Check:" blue
echo
hostname
echo
cat <<EOF >/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
$PublicIP $HostName
EOF
echo
c1 "Hosts Check:" blue
echo
cat /etc/hosts
echo

###################################################################################
## 5. 安装必要的软件包
###################################################################################

echo "###################################################################################"
echo
c1 "5. 安装必要的软件包:" red
echo
echo "###################################################################################"
echo
mount /dev/cdrom /media/ >/dev/null 2>&1
rm -rf /etc/yum.repos.d/*
cat >>/etc/yum.repos.d/local.repo <<"EOF"
[base]
name=base
baseurl=file:///media
enabled=1
gpgcheck=0
EOF
yum clean all >/dev/null 2>&1     #清理本地缓存
yum clean plugins >/dev/null 2>&1 #清理插件缓存
c1 "正在安装依赖包......" fr
echo
yum install -y binutils compat-libcap1 elfutils-libelf-devel compat-libstdc++* gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat readline* unzip device-mapper* smartmontools openssh-clients --skip-broken >/dev/null 2>&1
echo
c1 "RPM Check:" blue
echo
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-libcap1 elfutils-libelf-devel compat-libstdc++ gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat readline
echo
c1 "依赖包安装完成" blue
echo

###################################################################################
## 6. Disable HugePage
###################################################################################
echo "################################################################################"
echo
c1 "6. Disable Transparent HugePages:" blue
echo
echo "################################################################################"
echo
if [ ${LinuxVer} -eq 6 ]; then
  cat >>/etc/rc.d/rc.local <<EOF
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
EOF
  echo
else
  sed -i 's/quiet/quiet transparent_hugepage=never/' /etc/default/grub
  grub2-mkconfig -o /boot/grub2/grub.cfg >/dev/null 2>&1
fi

#临时生效:
echo never >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/defrag
echo
c1 "Transparent HugePages Check:" blue
echo
cat /sys/kernel/mm/transparent_hugepage/enabled
echo

###################################################################################
## 7. 内核参数调整
###################################################################################

echo "#################################################################################"
echo
c1 "7. 内核参数调整:" red
echo
echo "#################################################################################"
cp /etc/sysctl.conf /etc/sysctl.conf.bak
cat >/etc/sysctl.conf <<EOF
##################### Sysctl Add #####################
kernel.shmall = 2097152
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 4294967295
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
##################### Sysctl End #####################
EOF
echo
c1 "SYSCTL Check:" blue
echo
sysctl -p
echo

###################################################################################
## 8. 用户、目录及Limit环境配置
###################################################################################

echo "###################################################################################"
echo
c1 "8. 用户、目录及Limit环境配置:" red
echo
echo "###################################################################################"
echo
c1 "8.1 创建用户组和用户:" blue
echo
OINSTALL=$(grep "oinstall" /etc/group)
DBA=$(grep "dba" /etc/group)
OPER=$(grep "oper" /etc/group)
ORACLE=$(grep "oracle" /etc/passwd)

if [[ $OINSTALL != "" ]]; then
  echo "GROUP OINSTALL is already create"
else
  groupadd oinstall
fi
echo
if [[ $DBA != "" ]]; then
  echo "GROUP DBA is already create"
else
  groupadd dba
fi
echo
if [[ $OPER != "" ]]; then
  echo "GROUP OPER is already create"
else
  groupadd oper
fi
echo
if [[ $ORACLE != "" ]]; then
  echo "USER ORACLE is already create"
else
  useradd -g oinstall -G dba,oper -u 1000 oracle
  echo $oraclePasswd | passwd --stdin oracle
fi
echo
c1 "Users Check:" blue
echo
id oracle
echo

c1 "8.2 创建目录:" blue
echo $ORAINVENTORYTemp
echo $ORACLE_BASETemp
echo $ORACLE_HOMETemp
echo $ORADATATemp
echo
mkdir -p $ORACLE_BASETemp
mkdir -p $ORACLE_HOMETemp
mkdir -p $ORADATATemp
mkdir -p $ORAINVENTORYTemp
chown -R oracle:oinstall $ORADATATemp
chown -R oracle:oinstall $ORAINVENTORYTemp
chown -R oracle:oinstall $ORACLE_BASETemp
chmod -R 775 $OracleHomeTemp

c1 "8.3 修改会话限制:" blue
echo
cp /etc/security/limits.conf /etc/security/limits.conf.bak
cat >/etc/security/limits.conf <<"EOF"
############### Limits Add ##########################
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
############### Limits End ##########################
EOF
c1 "Limits Check:" blue
echo
grep -v "#" /etc/security/limits.conf
echo
PAM_LIMITS=$(grep "pam_limits.so" /etc/pam.d/login)

if [[ $PAM_LIMITS != "" ]]; then
  echo "PAM_LIMITS is already set"
else
  cat >>/etc/pam.d/login <<"EOF"
################# Pam_limits Add ####################
session    required     pam_limits.so
################# Pam_limits End ####################
EOF
fi
echo
c1 "Pam_limits Check:" blue
echo
grep "pam_limits.so" /etc/pam.d/login
echo
c1 "8.4 编辑root用户环境变量:" blue
echo
ALIAS=$(grep "alias" /etc/profile)
if [[ $ALIAS != "" ]]; then
  echo "ROOT PROFILE is already set"
else
  cat >>/etc/profile <<"EOF"
################# Root Rrofile Add ############################
if [ $USER = "oracle" ] || [ $USER = "root" ]; then
        if  [ $SHELL = "/bin/ksh" ];  then
              ulimit -p 16384
              ulimit -n 65536
        else
              ulimit -u 16384 -n 65536
        fi
fi
alias so='su - oracle'
################# Root Rrofile End ############################
EOF
fi
echo
c1 "8.5 编辑oracle用户环境变量:" blue
echo
ALIAS=$(grep "alias" /home/oracle/.bash_profile)
if [[ $ALIAS != "" ]]; then
  echo "ORACLE PROFILE is already set"
else
  cat <<EOF >>/home/oracle/.bash_profile
################ Oracle Profile Add #########################
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export ORACLE_BASE=$ORACLE_BASETemp
export ORACLE_HOME=$ORACLE_HOMETemp
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=$ORACLE_SIDTemp
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias lsnrctl='rlwrap lsnrctl'
alias asmcmd='rlwrap asmcmd'
alias adrci='rlwrap adrci'
alias sas='sqlplus / as sysdba'
alias ggsci='rlwrap ggsci'
alias alert='tail -500f \$ORACLE_BASE/diag/rdbms/$ORACLE_SIDTemp/$ORACLE_SIDTemp/trace/alert_$ORACLE_SIDTemp.log|more'
################ Oracle Profile End #########################
EOF
fi
echo
c1 "Oracle Profile Check:" blue
echo
cat /home/oracle/.bash_profile
echo
sleep 1
read -p "请检查以上设置是否存在错误,如发现错误,请修改后重新执行该脚本,如没有错误请按Enter键继续,Ctrl+C退出"
sleep 1
###################################################################################
## 9. 解压Oracle安装包
###################################################################################

echo
echo "###################################################################################"
echo
c1 "9. 解压Oracle安装包:" red
echo
echo "###################################################################################"
echo
c1 "需要提前上传的安装包:" blue
echo
c1 "p13390677_112040_Linux-x86-64_1of7.zip" red
c1 "p13390677_112040_Linux-x86-64_2of7.zip" red
c1 "pdksh-5.2.14-37.el5.x86_64.rpm" red
c1 "rlwrap-0.42.tar.gz" blue
echo
sleep 3
echo
read -p "请确认您已经将ORACLE安装包上传至$Soft,上传后按Enter键继续"
c1 "安装包正在解压中,等待时间比较久......" fr
cd $Soft
rpm -e ksh-20120801-33.el6.x86_64 >/dev/null 2>&1
rpm -ivh $Soft/pdksh-5.2.14-37.el5.x86_64.rpm >/dev/null 2>&1
unzip -q $Soft/$OracleSoft1
unzip -q $Soft/$OracleSoft2
tar -zxvf $Soft/rlwrap-0.42.tar.gz -C $Soft >/dev/null 2>&1
cd $Soft/rlwrap-0.42/
./configure >/dev/null 2>&1
make >/dev/null 2>&1
make install >/dev/null 2>&1
c1 "安装包解压完成!" blue
echo

四、生成db.rsp静默文件

####################################################################################
# 10. Edit ResponseFile Of Db.rsp
####################################################################################

echo "###################################################################################"
echo
c1 "10. Edit ResponseFile Of Db.rsp:" red
echo
echo "###################################################################################"
echo
su - -c "echo 'oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.option=INSTALL_DB_SWONLY' >> ${Soft}/db.rsp"
su - -c "echo 'ORACLE_HOSTNAME='${HostName} >> ${Soft}/db.rsp"
su - -c "echo 'UNIX_GROUP_NAME=oinstall' >> ${Soft}/db.rsp"
su - -c "echo 'INVENTORY_LOCATION='$ORAINVENTORYTemp >> ${Soft}/db.rsp"
su - -c "echo 'SELECTED_LANGUAGES=en' >> ${Soft}/db.rsp"
su - -c "echo 'ORACLE_HOME='${ORACLE_HOMETemp} >> ${Soft}/db.rsp"
su - -c "echo 'ORACLE_BASE='${ORACLE_BASETemp}>> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.InstallEdition=EE' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.EEOptionsSelection=false' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.optionalComponents=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.DBA_GROUP=dba' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.OPER_GROUP=oper' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.CLUSTER_NODES=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.isRACOneInstall=false' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.racOneServiceName=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.type=GENERAL_PURPOSE' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.installExampleSchemas=false' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.enableSecuritySettings=true' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.globalDBName=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.SID=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.characterSet=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.memoryOption=false' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.memoryLimit=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.password.ALL=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.password.SYS=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.password.SYSTEM=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.password.SYSMAN=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.password.DBSNMP=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.control=DB_CONTROL' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.automatedBackup.enable=false' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.automatedBackup.osuid=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.automatedBackup.ospwd=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.storageType=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.install.db.config.asm.diskGroup=' >> ${Soft}/db.rsp"
su - -c "echo 'MYORACLESUPPORT_USERNAME=' >> ${Soft}/db.rsp"
su - -c "echo 'MYORACLESUPPORT_PASSWORD=' >> ${Soft}/db.rsp"
su - -c "echo 'SECURITY_UPDATES_VIA_MYORACLESUPPORT=false' >> ${Soft}/db.rsp"
su - -c "echo 'DECLINE_SECURITY_UPDATES=true' >> ${Soft}/db.rsp"
su - -c "echo 'PROXY_HOST=' >> ${Soft}/db.rsp"
su - -c "echo 'PROXY_PORT=' >> ${Soft}/db.rsp"
su - -c "echo 'PROXY_USER=' >> ${Soft}/db.rsp"
su - -c "echo 'PROXY_PWD=' >> ${Soft}/db.rsp"
su - -c "echo 'PROXY_REALM=' >> ${Soft}/db.rsp"
su - -c "echo 'COLLECTOR_SUPPORTHUB_URL=' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.installer.autoupdates.option=SKIP_UPDATES' >> ${Soft}/db.rsp"
su - -c "echo 'oracle.installer.autoupdates.downloadUpdatesLoc=' >> ${Soft}/db.rsp"
su - -c "echo 'AUTOUPDATES_MYORACLESUPPORT_USERNAME=' >> ${Soft}/db.rsp"
su - -c "echo 'AUTOUPDATES_MYORACLESUPPORT_PASSWORD=' >> ${Soft}/db.rsp"
echo
cat ${Soft}/db.rsp
echo
chown -R oracle:oinstall $Soft
echo

五、Oracle软件静默安装

####################################################################################
# 11. 静默安装ORACLE软件
####################################################################################

echo
echo "###################################################################################"
echo
c1 "11. 静默安装ORACLE软件:" red
echo
echo "###################################################################################"
echo
su - oracle -c "${Soft}/database/runInstaller -silent -showProgress -ignoreSysPrereqs -ignorePrereq -responseFile ${Soft}/db.rsp"
echo
c1 "等待Successfully Setup Software.出现时,请按回车键继续" fr
echo
sleep 1
echo
read -p "Oracle Software正在安装......"
echo
##自动执行root.sh
$ORAINVENTORYTemp/orainstRoot.sh
$ORACLE_HOMETemp/root.sh
##设置sqlplus显示格式
echo set sqlprompt '&_user.@&_connect_identifier.>' >>$ORACLE_HOMETemp/sqlplus/admin/glogin.sql
echo
sleep 1
read -p "Oracle Software安装完成!按Enter键继续,Ctrl+C退出"
echo

六、静默建库&启动监听

####################################################################################
# 12. dbca静默建库
####################################################################################
echo "###################################################################################"
echo "12. dbca静默建库"
echo
echo
su - oracle -c "dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname $ORACLE_SIDTemp -sid $ORACLE_SIDTemp -sysPassword $oraclePasswd -systemPassword $oraclePasswd -responseFile NO_VALUE -datafileDestination $ORADATATemp -redoLogFileSize 50 -storageType FS -listeners LISTENER -characterSet $CharacterSet -nationalCharacterSet $NationalCharacterSet -sampleSchema true -memoryPercentage 30 -totalMemory $MemOracle -databaseType OLTP -emConfiguration NONE"
echo
echo

####################################################################################
# 13. 启动监听
####################################################################################
echo "###################################################################################"
echo "13. 启动监听"
echo
echo
sleep 1
echo
read -p "请确认数据库实例已成功创建,按Enter键开始,Ctrl+C退出"
echo
##如果监听文件已创建,则启动监听,否则静默创建监听
if [ -f /$ORACLE_HOMETemp/network/admin/listener.ora ]; then
  su - oracle -c "lsnrctl start"
else
  su - oracle -c "netca -silent -responsefile ${Soft}/database/response/netca.rsp"
fi
echo
echo
c1 "恭喜您,数据库已创建成功!" red
echo

七、脚本使用方式

1、touch一个sh脚本,将以上所有脚本按顺序放入其中。

2、根据实际情况,修改参数配置部分的IP,主机名,ORACLE_SID,oracle用户密码,字符集。

3、挂载磁盘镜像。

4、切换到root用户下,执行脚本,根据脚本提示进行操作。

sh 11GR2_auto_install.sh|tee 11GR2_auto_install.log

猜你喜欢

转载自blog.csdn.net/m0_50546016/article/details/115324065