Oracle 19c 安装脚本
[root@localhost ~]# vi oracle_19c_install.sh
#!/bin/bash
# 安装前基础配置
echo -e "\033[32m########################################################\033[0m"
echo -e "\033[32m# 技术张儿编写Oracle19c一件安装脚本!!! #\033[0m"
echo -e "\033[32m# 系统要求:centos7.x 内存4G+ #\033[0m"
echo -e "\033[32m# 注意:安装前需要将Oracle19C安装包上传到/root/目录 #\033[0m"
echo -e "\033[32m########################################################\033[0m"
while true;
do read -p "是否将Oracle19c安装包上传到/root/家目录下[y/n]:" ZIP
if [[ $ZIP == "y" ]] || [[ $ZIP == "Y" ]] || [[ $ZIP == "YES" ]] || [[ $ZIP == "yes" ]]; then
echo "Oracle19c安装包已上传/root/!"
break
elif [[ $ZIP == "n" ]] || [[ $ZIP == "N" ]] || [[ $ZIP == "NO" ]] || [[ $ZIP == "no" ]]; then
echo "请将Oracle19c安装包上传/root/后再运行该脚本!"
exit 1
else
echo "你输入的不是y或n,请重新输入"
fi
done
VAR_SET () {
while true;
do read -p "请输入你的ip地址: " IP
[ -z $IP ] && echo "IP不能为空" && continue || echo "IP设置成功" && break
done
while true;
do read -p "请输入你的主机名: " HOSTNAME
[ -z $IP ] && echo "主机名不能为空" && continue || echo "主机名设置成功" && break
done
while true;
do read -p "请设置oracle_sys用户密码: " SYS
[ -z $SYS ] && echo "oracle_sys用户密码不能为空" && continue || echo "oracle_sys用户密码设置成功" && break
done
while true;
do read -p "请设置oracle_system用户密码: " SYSTEM
[ -z $SYSTEM ] && echo "oracle_system用户密码不能为空" && continue || echo "oracle_system用户密码设置成功" && break
done
while true;
do read -p "请设置oracle系统用户密码: " ORACLE_USER
[ -z $ORACLE_USER ] && echo "oracle系统用户密码不能为空" && continue || echo "oracle系统用户密码设置成功" && break
done
# 设置ORACLE_SID
while true;
do read -p "请设置oracle_sid: " ORACLE_SID
[ -z $ORACLE_SID ] && echo "ORACLE_SID不能为空" && continue || echo "ORACLE_SID设置成功" && break
done
# 创建安装日志目录文件
mkdir -p /var/log/oracle19c
touch /var/log/oracle19c/oracle.log
INSTALL_LOG=/var/log/oracle19c/oracle.log
# hosts解析
echo "$IP $HOSTNAME" >> /etc/hosts
# 设置日志目录
ORA_INVENTORY=/u01/app/oraInventory/
# oracle_directory
ORACLE_BASE_DIR="/u01/app/oracle"
ORACLE_HOME_DIR="/u01/app/oracle/product/19.3.0"
ORACLE_DATA_DIR="/u01/app/oracle/oradata"
# 设置安装目录
while true;
do read -p "请设置数据库安装目录(回车/Y/y 使用默认${ORACLE_BASE_DIR}设置为安装根目录,N/n 新建路径): " input
if [[ -z "$input" || "$input" == "Y" || "$input" == "y" ]]; then
ORACLE_BASE=$ORACLE_BASE_DIR
mkdir -p $ORACLE_BASE
break
elif [[ "$input" == "N" || "$input" == "n" ]]; then
read -p "请输入新的目录路径: " NEW_ORACLE_BASE
ORACLE_BASE=$NEW_ORACLE_BASE
mkdir -p $ORACLE_BASE
break
else
echo "输入的无效, 请重新输入!"
fi
done
# 设置数据库具体版本目录
while true;
do read -p "请设置数据库产品目录(回车/Y/y 使用默认${ORACLE_HOME_DIR}设置为安装oracle19c产品目录,N/n 新建路径): " input
if [[ -z "$input" || "$input" == "Y" || "$input" == "y" ]]; then
ORACLE_HOME=$ORACLE_HOME_DIR
mkdir -p $ORACLE_HOME
break
elif [[ "$input" == "N" || "$input" == "n" ]]; then
read -p "请输入新的目录路径: " NEW_ORACLE_HOME
ORACLE_HOME=$NEW_ORACLE_HOME
mkdir -p $ORACLE_HOME
break
else
echo "输入的无效, 请重新输入!"
fi
done
# 设置数据库数据存放目录(dbf表空间文件)
while true;
do read -p "请设置数据库DATA目录(回车/Y/y 使用默认${ORACLE_DATA_DIR}设置为数据库数据存放目录,N/n 新建路径): " input
if [[ -z "$input" || "$input" == "Y" || "$input" == "y" ]]; then
ORACLE_DATA=$ORACLE_DATA_DIR
mkdir -p $ORACLE_DATA
break
elif [[ "$input" == "N" || "$input" == "n" ]]; then
read -p "请输入新的目录路径: " NEW_ORACLE_DATA
ORACLE_DATA=$NEW_ORACLE_DATA
mkdir -p $ORACLE_DATA
break
else
echo "输入的无效, 请重新输入!"
fi
done
}
BASE_SET () {
echo -e "\033[32m 创建用户组... \033[0m"
# 创建oracle19c需要的数据库用户组和用户
groupadd oinstall >>$INSTALL_LOG
groupadd dba >>$INSTALL_LOG
groupadd oper >>$INSTALL_LOG
groupadd backupdba >>$INSTALL_LOG
groupadd dgdba >>$INSTALL_LOG
groupadd kmdba >>$INSTALL_LOG
groupadd racdba >>$INSTALL_LOG
groupadd asmdba >>$INSTALL_LOG
useradd -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper -m oracle >>$INSTALL_LOG
echo "$ORACLE_USER" | passwd --stdin oracle >>$INSTALL_LOG
echo -e "\033[32m 设置主机名... \033[0m"
hostnamectl set-hostname $HOSTNAME
echo -e "\033[32m 正在设置防火墙和selinux,请稍等... \033[0m"
# 关闭selinux和配置防火墙
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable firewalld --now &>/dev/null
systemctl stop firewalld
echo -e "\033[32m 正在配置yum源,请稍等... \033[0m"
# 配置yum源
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/centos7.6.repo << EOF
[Centos7]
name=Centos7
baseurl=http://10.0.0.250/centos7.6
enabled=1
gpgcheck=1
gpgkey=http://10.0.0.250/centos7.6/RPM-GPG-KEY-CentOS-7
EOF
yum clean all &>/dev/null
yum makecache &>/dev/null
# 安装依赖软件
echo -e "\033[32m 正在安装依赖软件,请稍等... \033[0m"
yum install -y vim nstall bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make gcc gcc-c++ net-tools nfs-utils python python-configshell python-rtslib python-six targetcli smartmontools sysstat zip unzip lrzsz &>>$INSTALL_LOG
# 修改用户的Shell限制
cat >> /etc/security/limits.conf << EOF
# Set Oracle Database Server
@oinstall soft nofile 2048
@oinstall hard nofile 65536
@oinstall soft nproc 16384
@oinstall soft stack 10240
EOF
# 配置系统内核参数
cat >> /etc/sysctl.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 896532
kernel.shmmax = 3672197038
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
EOF
sysctl -p &>>$INSTALL_LOG
# 设置所需要的环境变量
echo -e "\033[32m 正在设置环境变量,请稍等... \033[0m"
echo "
# oracle settings
export ORACLE_BASE=$ORACLE_BASE
export ORACLE_HOME=$ORACLE_HOME
export PATH=\$PATH:\$ORACLE_HOME/bin:/usr/local/bin
# 注意这里是你的主机,注意修改否则创建监听会出问题
export ORACLE_HOSTNAME=$HOSTNAME
export ORACLE_SID=$ORACLE_SID
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/rdbms/lib:\$ORACLE_HOME/network/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib:\$ORACLE_HOME/network/jlib
export NLS_LANG=\"american_america.ZHS16GBK\" " >>/home/oracle/.bash_profile
echo -e "\033[32m 正在解压oracle19c安装包,请稍等... \033[0m"
unzip /root/LINUX.X64_193000_db_home.zip -d $ORACLE_HOME &>>$INSTALL_LOG
# 授权
OB=`ls -ld $ORACLE_BASE|awk '{print $NF}'|sed 's/^.//'|awk -F'/' '{print $1}'`
OH=`ls -ld $ORACLE_HOME|awk '{print $NF}'|sed 's/^.//'|awk -F'/' '{print $1}'`
OD=`ls -ld $ORACLE_DATA|awk '{print $NF}'|sed 's/^.//'|awk -F'/' '{print $1}'`
OB_DIRECTORY="/$OB"
OH_DIRECTORY="/$OH"
OD_DIRECTORY="/$OD"
chown -R oracle.oinstall $OB_DIRECTORY && chmod -R 755 $OB_DIRECTORY
chown -R oracle.oinstall $OH_DIRECTORY && chmod -R 755 $OH_DIRECTORY
chown -R oracle.oinstall $OD_DIRECTORY && chmod -R 755 $OD_DIRECTORY
chown oracle.oinstall -R $INSTALL_LOG
}
INSTALL_ORACLE () {
echo -e "\033[32m 正在安装,安装时间比较长请耐心等待... \033[0m"
cp $ORACLE_HOME/install/response/db_install.rsp $ORACLE_HOME/install/response/db_install.rsp.bak
echo "
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=$ORA_INVENTORY
ORACLE_HOME=$ORACLE_HOME
ORACLE_BASE=$ORACLE_BASE
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.rootconfig.executeRootScript=false" >> $ORACLE_HOME/install/response/db_install.rsp
# 静默安装
su - oracle << EOF
export CV_ASSUME_DISTID=CENTOS7.6;
cd $ORACLE_HOME
./runInstaller -silent -responseFile $ORACLE_HOME/install/response/db_install.rsp &>>$INSTALL_LOG
EOF
/u01/app/oraInventory/orainstRoot.sh &>>$INSTALL_LOG
/u01/app/oracle/product/19.3.0/root.sh &>>$INSTALL_LOG
}
NETCA () {
echo -e "\033[32m 正在设置监听,请耐心等待... \033[0m"
su - oracle &>>$INSTALL_LOG << EOF
netca /silent /responseFile $ORACLE_HOME/assistants/netca/netca.rsp &>>$INSTALL_LOG
EOF
}
DBCA () {
echo -e "\033[32m 正在创建数据库,请耐心等待... \033[0m"
find / -name orainstRoot.sh | bash &>>$INSTALL_LOG
bash $ORACLE_HOME/assistants/dbca/dbca.rsp $ORACLE_HOME/assistants/dbca/dbca.rsp.bak
echo "
gdbName=p19c
sid=p19c
databaseConfigType=SI
templateName=General_Purpose.dbc
sysPassword=$SYS
systemPassword=$SYSTEM
emConfiguration=DBEXPRESS
dbsnmpPassword=oracle
datafileDestination=$ORACLE_DATA
characterSet=ZHS16GBK
totalMemory=3100
" > $ORACLE_HOME/assistants/dbca/dbca.rsp
su - oracle &>>$INSTALL_LOG << EOF
dbca -silent -createDatabase -responseFile $ORACLE_HOME/assistants/dbca/dbca.rsp &>>$INSTALL_LOG
EOF
}
VAR_SET
BASE_SET
INSTALL_ORACLE
NETCA
DBCA
# 检查安装是否正确
echo -e "\033[32m 正在检查,请稍等... \033[0m"
sleep 2
netstat -anltp |grep 1521 &>/dev/null
[ $? -ne 0 ] && echo "Oracle19c安装失败请检查" && exit 1 ||
echo -e "\033[32m oracle19c安装成功!\033[0m"
echo -e "\033[32m-------------------------------------------------------------------\033[0m"
echo -e "\033[32m 检查数据库检查 \033[0m"
echo -e "\033[32m 主机名: $HOSTNAME \033[0m"
echo -e "\033[32m oracle_sid: $ORACLE_SID \033[0m"
echo -e "\033[32m sys用户密码: $SYS \033[0m"
echo -e "\033[32m system用户密码: $SYSTEM \033[0m"
echo -e "\033[32m 安装日志: $INSTALL_LOG \033[0m"
echo -e "\033[32m oracle用户密码: $ORACLE_USER \033[0m"
echo -e "\033[32m-------------------------------------------------------------------\033[0m"
#SQL> create user openstack identified by openstack;
#SQL> grant connect,resource,dba to openstack;
#
# 连接方式
#sqlplus system/password@p19c
#sqlplus / as sysdba
运行展示
[root@localhost ~]# bash oracle_19c_install.sh
########################################################
# 技术张儿编写Oracle19c一件安装脚本!!! #
# 系统要求:centos7.x 内存4G+ #
# 注意:安装前需要将Oracle19C安装包上传到/root/目录 #
########################################################
是否将Oracle19c安装包上传到/root/家目录下[y/n]:y
Oracle19c安装包已上传/root/!
请输入你的ip地址: 10.0.0.11
IP设置成功
请输入你的主机名: oracle-p19c
主机名设置成功
请设置oracle_sys用户密码: oracle
oracle_sys用户密码设置成功
请设置oracle_system用户密码: oracle
oracle_system用户密码设置成功
请设置oracle系统用户密码: oracle
oracle系统用户密码设置成功
请设置oracle_sid: p19c
ORACLE_SID设置成功
请设置数据库安装目录(回车/Y/y 使用默认/u01/app/oracle设置为安装根目录,N/n 新建路径):
请设置数据库产品目录(回车/Y/y 使用默认/u01/app/oracle/product/19.3.0设置为安装oracle19c产品目录,N/n 新建路径):
请设置数据库DATA目录(回车/Y/y 使用默认/u01/app/oracle/oradata设置为数据库数据存放目录,N/n 新建路径):
创建用户组...
设置主机名...
正在设置防火墙和selinux,请稍等...
正在配置yum源,请稍等...
正在安装依赖软件,请稍等...
正在设置环境变量,请稍等...
正在解压oracle19c安装包,请稍等...
正在安装,安装时间比较长请耐心等待...
正在设置监听,请耐心等待...
正在创建数据库,请耐心等待...
正在检查,请稍等...
oracle19c安装成功!
-------------------------------------------------------------------
检查数据库检查
主机名: oracle-p19c
oracle_sid: p19c
sys用户密码: oracle
system用户密码: oracle
安装日志: /var/log/oracle19c/oracle.log
oracle用户密码: oracle
-------------------------------------------------------------------