#!/bin/bash
#Creation Data: 2019-06-26
#Last-Modified Date: 2020-06-05
#Author: Create by xiaoxuesong
#Mail: xiaoxuesong@longigroup.com
#Function: Oracle 11g/12c/19c install on Linux 6/7(oracle linux && redhat)
#version: 1.0 初版编写
#version: 1.1 加入判断是否归档模式,修改一些bug
#version: 1.2 加入安装目录判断,增加一些注释
#version: 1.3 加入字符集判断,设置默认字符集为AL32UTF8;丰富安装日志;增加GLOBLE_DBName环境变量;修改一些bug
#version: 2.0 判断OS版本,增加Linux 7的安装;判断DB版本,增加12.2.0.1的安装
#version: 3.0 使用function重构代码;增加安装判断;增加国家字符集判断;调整依赖的rpm包;自动判断OS版本;增加内存百分比设置参数;修改linux7 hostname目录;设置审计为none;设置DB密码不过期
#version: 3.1 修改一些配置项
#version: 3.2 增加了yum配置选项
#version: 4.0 增加19c安装配置,增加OS配置
#--可以完善的内容
#version: X 初始化变量输入时,加入不合理变量判断(比如判断Oracle_SID是否超过8个字符、密码合规性检查)
# 判断是否创建CDB
#Readme :需要准备和确认的事情
#1,修改主机名/etc/sysconfig/network(linux6) 或者 /etc/hostname(linux7)
#2,软件安装路径和数据文件路径要提前规划好
#3,软件安装会自动下载到/tmp目录
#4,准备好yum源、NTP配置文件
#5,准备好监控脚本
#6,脚本必须放在Oracle用户有权访问的位置下执行,如/tmp目录
#****************************************************************************************************************#
#-------------------------#
# judge what needs to be done
# v3.0
#-------------------------#
INPUT_Flag=true
read -p "choice what will you do?: configOS/installSoftwareOnly/createDB/removeDB [createDB]? " INPUT_CHOICE
while $INPUT_Flag #判断输入是否正确
do
if [[ -z "${INPUT_CHOICE}" ]] || [[ $INPUT_CHOICE = "createDB" ]] || [[ $INPUT_CHOICE = "y" ]] || [[ $INPUT_CHOICE = "Y" ]];then
INPUT_CHOICE=createDB
INPUT_Flag=false
elif [[ $INPUT_CHOICE = "installSoftwareOnly" ]];then
DB_VERSION=installSoftwareOnly
INPUT_Flag=false
elif [[ $INPUT_CHOICE = "configOS" ]];then
DB_VERSION=configOS
INPUT_Flag=false
elif [[ $INPUT_CHOICE = "removeDB" ]];then
INPUT_Flag=false
else
echo -e "\033[37;31;5mInput error!!!\033[39;49;0m"
read -p "What will you do?: configOS/installSoftwareOnly/createDB [createDB]? " INPUT_CHOICE
INPUT_Flag=true
fi
done
#-------------------------#
# remove database
#-------------------------#
function removeDB(){
read -p "if the DB install directory: /u01/app (y/n) [y]? " INSTALL_DIR
if [[ -z "${INSTALL_DIR}" ]] || [[ $INSTALL_DIR = "/u01/app" ]] || [[ $INSTALL_DIR = "y" ]] || [[ $INSTALL_DIR = "Y" ]];then
INSTALL_DIR=/u01/app
elif [[ $INSTALL_DIR = "n" ]] || [[ $INSTALL_DIR = "N" ]];then
read -p "please input DB install directory: " INSTALL_DIR
fi
su - oracle -c "sqlplus -s / as sysdba" <<EOF
select open_mode from v\$database;
shutdown abort;
EXIT
EOF
su - oracle -c "lsnrctl stop"
rm -rf ${INSTALL_DIR}
rm -rf /usr/local/bin/dbhome
rm -rf /usr/local/bin/oraenv
rm -rf /usr/local/bin/coraenv
rm -rf /etc/oratab
rm -rf /etc/oraInst.loc
rm -rf /opt/oraInventory/ContentsXML/inventory.xml
userdel -rf oracle
groupdel oinstall
groupdel dba
ps -ef|grep -v grep |grep ora|awk '{print $2}'|xargs kill -9
}
if [[ $INPUT_CHOICE = "removeDB" ]];then
echo -e "\033[37;31;5mbegin remove database...\033[39;49;0m"
removeDB
echo -e "\033[37;31;5mremove complate! 886...\033[39;49;0m"
exit
fi
#-------------------------#
# set initialization parameters
#-------------------------#
read -p "please input globle_dbname: " GLOBLE_DBName #v1.3
read -p "please input ORACLE_SID: " ORACLE_SID
if [[ $INPUT_CHOICE = "createDB" ]];then
read -p "please input SYSTEM PASSWD: " SYSTEM_PASSWD
fi
read -p "please input IPADDR: " hostip
read -p "please input ORACLE PASSWD: " ORAPASSWD
#set variable
SCRIPT_DIR=`pwd`
#SCRIPT_DIR=/root/scripts
hostname_long=`hostname`
host_name=`hostname|cut -f 1 -d '.'`
DNS='10.0.1.33'
SITE='10.0.3.243'
SITE2='66.0.193.30'
DATETIME=`date +%Y%m%d`
RELS=`more /etc/system-release`
OS_VER_PRI=`echo ${RELS#*release} |awk '{print $1}' | cut -f 1 -d '.'`
#-------------------------#
# judge OS VERSION
# v2.0
# v3.0
#-------------------------#
if [ $OS_VER_PRI -eq 7 ];then
OS_VERSION=linux7
elif [ $OS_VER_PRI -eq 6 ];then
OS_VERSION=linux6
else
echo "sorry, this operating system is not supported!!!"
exit
fi
#-------------------------#
# input DB_VERSION
# v2.0
# v4.0
#-------------------------#
read -p "please input DB VERSION: 11g/12c/19c [19c]? " V_DB_VERSION
if [[ -z "${V_DB_VERSION}" ]] || [[ $V_DB_VERSION = "19c" ]] || [[ $V_DB_VERSION = "19C" ]] || [[ $V_DB_VERSION = "19" ]];then
DB_VERSION=19.3.0.0
elif [[ $V_DB_VERSION = "12c" ]] || [[ $V_DB_VERSION = "12C" ]] || [[ $V_DB_VERSION = "12" ]];then
DB_VERSION=12.2.0.1
elif [[ $V_DB_VERSION = "11g" ]] || [[ $V_DB_VERSION = "11G" ]] || [[ $V_DB_VERSION = "11" ]];then
DB_VERSION=11.2.0.4
else
echo "DB version input error!!!"
exit
fi
#-------------------------#
# set archiveLogMode
#-------------------------#
if [[ $INPUT_CHOICE = "createDB" ]];then
read -p "please input ARCH MODE: true/false [Y]? " V_ARCH_MODE #v1.1
if [[ -z "${V_ARCH_MODE}" ]] || [[ $V_ARCH_MODE = "true" ]] || [[ $V_ARCH_MODE = "y" ]] || [[ $V_ARCH_MODE = "Y" ]];then
ARCH_MODE=true
elif [[ $V_ARCH_MODE = "false" ]] || [[ $V_ARCH_MODE = "n" ]] || [[ $V_ARCH_MODE = "N" ]];then
ARCH_MODE=false
else
echo "archiveLogMode input error!!!"
exit
fi
fi
#-------------------------#
# set install directory
# v1.2
#-------------------------#
read -p "if the DB install directory: /u01/app (y/n) [y]? " INPUT_ENVDIR
if [[ -z "${INPUT_ENVDIR}" ]] || [[ $INPUT_ENVDIR = "/u01/app" ]] || [[ $INPUT_ENVDIR = "y" ]] || [[ $INPUT_ENVDIR = "Y" ]];then
ENV_BASE_DIR=/u01/app
elif [[ $INPUT_ENVDIR = "n" ]] || [[ $INPUT_ENVDIR = "N" ]];then
read -p "please input DB install directory: " ENV_BASE_DIR
else
ENV_BASE_DIR=$INPUT_ENVDIR
fi
#-------------------------#
# set CHARACTERSET
# v1.3
# v3.0
#-------------------------#
if [[ $INPUT_CHOICE = "createDB" ]];then
read -p "please input character set: AL32UTF8/ZHS16GBK/OTHERS[AL32UTF8]? " INPUT_NLS_LANG #v1.3
if [[ -z "${INPUT_NLS_LANG}" ]] || [[ $INPUT_NLS_LANG = "true" ]] || [[ $INPUT_NLS_LANG = "y" ]] || [[ $INPUT_NLS_LANG = "Y" ]];then
NLS_LANG=AL32UTF8
else
NLS_LANG=$INPUT_NLS_LANG
fi
fi
#-------------------------#
# set NATIONALCHARACTERSET
# add by v3.0
#-------------------------#
if [[ $INPUT_CHOICE = "createDB" ]];then
read -p "please input national character set: AL16UTF16/UTF8[AL16UTF16]? " INPUT_NLS_NCHAR_CHAR
if [[ -z "${INPUT_NLS_NCHAR_CHAR}" ]] || [[ $INPUT_NLS_NCHAR_CHAR = "true" ]] || [[ $INPUT_NLS_NCHAR_CHAR = "y" ]] || [[ $INPUT_NLS_NCHAR_CHAR = "Y" ]];then
NLS_NCHAR_CHAR=AL16UTF16
else
NLS_NCHAR_CHAR=UTF8
fi
fi
#-------------------------#
# set percentageMemory
# add by v3.0
#-------------------------#
if [[ $INPUT_CHOICE = "createDB" ]];then
INPUT_MemPercent_Flag=true
read -p "please input DB memory as a percentage of the OS: [60]? " INPUT_MemPercent
if [[ -z "${INPUT_MemPercent}" ]] || [[ $MemPercent = "true" ]] || [[ $MemPercent = "y" ]] || [[ $MemPercent = "Y" ]];then
MemPercent=60
else
while $INPUT_MemPercent_Flag #判断输入值是否为整数
do
expr $INPUT_MemPercent + 0 &>/dev/null
[ $? -eq 0 ] && INPUT_MemPercent_Flag=false || read -p "please input DB memory as a percentage of the OS: [60]? " INPUT_MemPercent
done
MemPercent=$INPUT_MemPercent
fi
fi
#-------------------------#
# Configure yum
# v3.2
#-------------------------#
read -p "Do you need to Configure yum(y/n) [y]? " INPUT_YUM
if [[ -z "${INPUT_YUM}" ]] || [[ $INPUT_YUM = "y" ]] || [[ $INPUT_YUM = "Y" ]];then
if [ `find /etc/yum.repos.d/ -maxdepth 1 |xargs grep -ri "10.0.3.243" | wc -l` -gt 0 ]; then
#这个查找会遍历/etc/yum.repos.d/所有子目录,参数-maxdepth 1无效
echo "yum checked, already configed ----- Not Modified" >> ${SCRIPT_DIR}/install.log
else
YUM_DIR=/etc/yum.repos.d
YUM_CONF=$YUM_DIR/longi_yum_conf.repo
OS_TYPE=`more /etc/system-release |awk '{print $1 $2}'`
RELS=`more /etc/system-release`
OS_VER=`echo ${RELS#*release} |awk '{print $1}'`
#判断OS版本
if [ ${OS_TYPE} = "CentOSLinux" ]; then
OS_VER=`echo ${RELS#*release} |awk '{print $1}'`
OS_VER_2=`echo ${OS_VER:0:1}`
OS_NAME=centos${OS_VER_2}
#echo $OS_NAME
elif [ ${OS_TYPE} = "OracleLinux" ]; then
OS_VER=`echo ${RELS#*release} | awk '{print $1}' | sed 's/\.//g'`
OS_VER_2=`echo ${OS_VER:0:1}`
OS_NAME=oel${OS_VER}
#echo $OS_NAME
elif [ ${OS_TYPE} = "RedHat" ]; then
OS_VER=`echo ${RELS#*release} | awk '{print $1}' | sed 's/\.//g'`
OS_VER_2=`echo ${OS_VER:0:1}`
OS_NAME=rhel${OS_VER}
#echo $OS_NAME
fi
# mv old repo config file to bak
if [ ! -d ${YUM_DIR}/old_bak ]; then
mkdir ${YUM_DIR}/old_bak
fi
repo_num=$(ls *.repo 2> /dev/null | wc -l)
if [ "$repo_num" != "0" ]; then
mv ${YUM_DIR}/*.repo ${YUM_DIR}/old_bak/
fi
## Create my conf file
if [ ${OS_TYPE} = "CentOSLinux" ]; then
cat >> $YUM_CONF <<EOF
[${OS_NAME}-local-base]
name=${OS_NAME}-local-base
baseurl=http://10.0.3.243/${OS_NAME}/base
enabled=1
gpgcheck=0
[${OS_NAME}-local-updates]
name=${OS_NAME}-local-updates
baseurl=http://10.0.3.243/${OS_NAME}/updates
enabled=1
gpgcheck=0
[${OS_NAME}-local-extras]
name=${OS_NAME}-local-extras
baseurl=http://10.0.3.243/${OS_NAME}/extras
enabled=1
gpgcheck=0
[epel${OS_VER_2}-local]
name=epel${OS_VER_2}-local
baseurl=http://10.0.3.243/epel${OS_VER_2}
enabled=1
gpgcheck=0
EOF
elif [ ${OS_TYPE} = "OracleLinux" ]; then
cat >> $YUM_CONF <<EOF
[${OS_NAME}-local-base]
name=${OS_NAME}-local-base
baseurl=http://10.0.3.243/${OS_NAME}
enabled=1
gpgcheck=0
[epel${OS_VER_2}-local]
name=epel${OS_VER_2}-local
baseurl=http://10.0.3.243/epel${OS_VER_2}
enabled=1
gpgcheck=0
EOF
elif [ ${OS_TYPE} = "RedHat" ]; then
cat >> $YUM_CONF <<EOF
[${OS_NAME}-local-base]
name=${OS_NAME}-local-base
baseurl=http://10.0.3.243/${OS_NAME}
enabled=1
gpgcheck=0
[epel${OS_VER_2}-local]
name=epel${OS_VER_2}-local
baseurl=http://10.0.3.243/epel${OS_VER_2}
enabled=1
gpgcheck=0
EOF
fi
echo "yum confige ----- SUCCEEDED" >> ${SCRIPT_DIR}/install.log
fi
fi
#-------------------------#
# judge if need to download software package
# v3.0
# v4.0
#-------------------------#
if [[ $INPUT_CHOICE = "createDB" ]] || [[ $INPUT_CHOICE = "installSoftwareOnly" ]];then
read -p "Do you need to download database package(y/n) [y]? " INPUT_DIR
if [[ -z "${INPUT_DIR}" ]] || [[ $INPUT_DIR = "y" ]] || [[ $INPUT_DIR = "Y" ]];then
#download database software package v2.0
if [ ${DB_VERSION} = "11.2.0.4" ];then
wget -O /tmp/p13390677_112040_Linux-x86-64_1of7.zip http://${SITE}/OracleSoftware/11g/p13390677_112040_Linux-x86-64_1of7.zip
wget -O /tmp/p13390677_112040_Linux-x86-64_2of7.zip http://${SITE}/OracleSoftware/11g/p13390677_112040_Linux-x86-64_2of7.zip
elif [ ${DB_VERSION} = "12.2.0.1" ];then
wget -O /tmp/linuxx64_12201_database.zip http://${SITE}/OracleSoftware/12c/linuxx64_12201_database.zip
elif [ ${DB_VERSION} = "19.3.0.0" ];then
wget -O /tmp/LINUX.X64_193000_db_home.zip http://${SITE}/OracleSoftware/19c/LINUX.X64_193000_db_home.zip
else
echo "Error database version! please check again!"
exit
fi
elif [[ $INPUT_DIR = "n" ]] || [[ $INPUT_DIR = "N" ]];then
echo -e "\033[37;33;5mMake sure the database installation package is in the\033[39;49;0m \033[37;31;5m/tmp\033[39;49;0m \033[37;33;5mdirectory. press any key for continue.\033[39;49;0m"
fi
fi
#-------------------------#
# install rpm
# v3.2
#-------------------------#
yum install -y wget
yum install -y unzip
if [ ${OS_VERSION} = linux7 ]; then
wget -O /tmp/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm http://${SITE}/OracleSoftware/rpm/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
wget -O /tmp/compat-libstdc++-33-3.2.3-72.el7.i686.rpm http://${SITE}/OracleSoftware/rpm/compat-libstdc++-33-3.2.3-72.el7.i686.rpm
yum install -y /tmp/compat-libstdc++-33-3.2.3-72.el7.i686.rpm
yum install -y /tmp/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
fi
#-------------------------#
# verify rpm
# modified by v3.0
#-------------------------#
echo "#################################" > rpm.log
echo "check rpm: " >> rpm.log
if [ ${DB_VERSION} = 12.2.0.1 ] && [ ${OS_VERSION} = linux6 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
e2fsprogs \
e2fsprogs-libs \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat >> rpm.log
elif [ ${DB_VERSION} = 12.2.0.1 ] && [ ${OS_VERSION} = linux7 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
nfs-utils \
net-tools \
smartmontools \
sysstat >> rpm.log
elif [ ${DB_VERSION} = 19.3.0.0 ] && [ ${OS_VERSION} = linux7 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
elfutils-libelf \
fontconfig-devel \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
smartmontools \
sysstat >> rpm.log
elif [ ${DB_VERSION} = 11.2.0.4 ] && [ ${OS_VERSION} = linux6 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \
compat-libstdc++-33 \
compat-libcap1 \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat >> rpm.log
elif [ ${DB_VERSION} = 11.2.0.4 ] && [ ${OS_VERSION} = linux7 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \
compat-libstdc++-33 \
compat-libcap1 \
elfutils-libelf \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libXi \
libXtst \
make \
sysstat >> rpm.log
fi
echo "#################################" >> rpm.log
if [ `grep "not installed" $SCRIPT_DIR/rpm.log | wc -l` -gt 0 ]; then
if [ ${DB_VERSION} = 12.2.0.1 ] && [ ${OS_VERSION} = linux6 ]; then
yum install -y bc
yum install -y binutils
yum install -y compat-libcap1
yum install -y compat-libstdc++-33.*i686
yum install -y compat-libstdc++-33.*x86_64
yum install -y e2fsprogs.*x86_64
yum install -y e2fsprogs-libs.*x86_64
yum install -y glibc.*i686
yum install -y glibc.*x86_64
yum install -y glibc-devel.*i686
yum install -y glibc-devel.*x86_64
yum install -y ksh
yum install -y libaio.*i686
yum install -y libaio.*x86_64
yum install -y libaio-devel*i686
yum install -y libaio-devel*x86_64
yum install -y libX11.*i686
yum install -y libX11.*x86_64
yum install -y libXau.*i686
yum install -y libXau.*x86_64
yum install -y libXi.*i686
yum install -y libXi.*x86_64
yum install -y libXtst.*i686
yum install -y libXtst.*x86_64
yum install -y libgcc.*i686
yum install -y libgcc.*x86_64
yum install -y libstdc++.*i686
yum install -y libstdc++.*x86_64
yum install -y libstdc++-devel.*i686
yum install -y libstdc++-devel.*x86_64
yum install -y libxcb.*i686
yum install -y libxcb.*x86_64
yum install -y libXrender.*i686
yum install -y libXrender.*x86_64
yum install -y libXrender-devel.*i686
yum install -y libXrender-devel.*x86_64
yum install -y make
yum install -y net-tools
yum install -y nfs-utils
yum install -y smartmontools
yum install -y sysstat
elif [ ${DB_VERSION} = 12.2.0.1 ] && [ ${OS_VERSION} = linux7 ]; then
yum install -y bc
yum install -y binutils
yum install -y compat-libcap1
yum install -y compat-libstdc++-33.*i686
yum install -y compat-libstdc++-33.*x86_64
yum install -y glibc.*i686
yum install -y glibc.*x86_64
yum install -y glibc-devel.*i686
yum install -y glibc-devel.*x86_64
yum install -y ksh
yum install -y libaio.*i686
yum install -y libaio.*x86_64
yum install -y libaio-devel*i686
yum install -y libaio-devel*x86_64
yum install -y libgcc.*i686
yum install -y libgcc.*x86_64
yum install -y libstdc++.*i686
yum install -y libstdc++.*x86_64
yum install -y libstdc++-devel.*i686
yum install -y libstdc++-devel.*x86_64
yum install -y libxcb.*i686
yum install -y libxcb.*x86_64
yum install -y libX11.*i686
yum install -y libX11.*x86_64
yum install -y libXau.*i686
yum install -y libXau.*x86_64
yum install -y libXi.*i686
yum install -y libXi.*x86_64
yum install -y libXtst.*i686
yum install -y libXtst.*x86_64
yum install -y libXrender.*i686
yum install -y libXrender.*x86_64
yum install -y libXrender-devel.*i686
yum install -y libXrender-devel.*x86_64
yum install -y make
yum install -y net-tools
yum install -y nfs-utils
yum install -y smartmontools
yum install -y sysstat
elif [ ${DB_VERSION} = 11.2.0.4 ] && [ ${OS_VERSION} = linux6 ]; then
yum install -y binutils
yum install -y compat-libcap1
yum install -y compat-libstdc++-33.*i686
yum install -y compat-libstdc++-33.*x86_64
yum install -y gcc
yum install -y gcc-c++
yum install -y glibc.*i686
yum install -y glibc.*x86_64
yum install -y glibc-devel.*i686
yum install -y glibc-devel.*x86_64
yum install -y ksh
yum install -y libgcc.*i686
yum install -y libgcc.*x86_64
yum install -y libstdc++.*i686
yum install -y libstdc++.*x86_64
yum install -y libstdc++-devel.*i686
yum install -y libstdc++-devel.*x86_64
yum install -y libaio.*i686
yum install -y libaio.*x86_64
yum install -y libaio-devel*i686
yum install -y libaio-devel*x86_64
yum install -y make
yum install -y sysstat
elif [ ${DB_VERSION} = 11.2.0.4 ] && [ ${OS_VERSION} = linux7 ]; then
yum install -y binutils
yum install -y compat-libcap1
yum install -y compat-libstdc++-33.*i686
yum install -y compat-libstdc++-33.*x86_64
yum install -y elfutils-libelf
yum install -y elfutils-libelf-devel
yum install -y gcc
yum install -y gcc-c++
yum install -y glibc.*i686
yum install -y glibc.*x86_64
yum install -y glibc-devel.*i686
yum install -y glibc-devel.*x86_64
yum install -y ksh
yum install -y libaio.*i686
yum install -y libaio.*x86_64
yum install -y libstdc++-devel.*i686
yum install -y libstdc++-devel.*x86_64
yum install -y libgcc.*i686
yum install -y libgcc.*x86_64
yum install -y libstdc++.*i686
yum install -y libstdc++.*x86_64
yum install -y libaio-devel*i686
yum install -y libaio-devel*x86_64
yum install -y libXi.*i686
yum install -y libXi.*x86_64
yum install -y libXtst.*i686
yum install -y libXtst.*x86_64
yum install -y make
yum install -y sysstat
elif [ ${DB_VERSION} = 19.3.0.0 ] && [ ${OS_VERSION} = linux7 ]; then
yum install -y bc
yum install -y binutils
yum install -y compat-libcap1
yum install -y compat-libstdc++-33.*i686
yum install -y compat-libstdc++-33.*x86_64
yum install -y gcc
yum install -y gcc-c++
yum install -y elfutils-libelf
yum install -y elfutils-libelf-devel
yum install -y fontconfig-devel
yum install -y glibc.*i686
yum install -y glibc.*x86_64
yum install -y glibc-devel.*i686
yum install -y glibc-devel.*x86_64
yum install -y ksh
yum install -y libaio.*i686
yum install -y libaio.*x86_64
yum install -y libaio-devel*i686
yum install -y libaio-devel*x86_64
yum install -y libgcc.*i686
yum install -y libgcc.*x86_64
yum install -y libstdc++.*i686
yum install -y libstdc++.*x86_64
yum install -y libstdc++-devel.*i686
yum install -y libstdc++-devel.*x86_64
yum install -y libxcb.*i686
yum install -y libxcb.*x86_64
yum install -y libX11.*i686
yum install -y libX11.*x86_64
yum install -y libXau.*i686
yum install -y libXau.*x86_64
yum install -y libXi.*i686
yum install -y libXi.*x86_64
yum install -y libXtst.*i686
yum install -y libXtst.*x86_64
yum install -y libXrender.*i686
yum install -y libXrender.*x86_64
yum install -y libXrender-devel.*i686
yum install -y libXrender-devel.*x86_64
yum install -y make
yum install -y net-tools
yum install -y nfs-utils
yum install -y smartmontools
yum install -y sysstat
fi
fi
#verify rpm
echo "#################################" > rpm.log
echo "check rpm: " >> rpm.log
if [ ${DB_VERSION} = 12.2.0.1 ] && [ ${OS_VERSION} = linux6 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
e2fsprogs \
e2fsprogs-libs \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat >> rpm.log
elif [ ${DB_VERSION} = 12.2.0.1 ] && [ ${OS_VERSION} = linux7 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
nfs-utils \
net-tools \
smartmontools \
sysstat >> rpm.log
elif [ ${DB_VERSION} = 19.3.0.0 ] && [ ${OS_VERSION} = linux7 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
elfutils-libelf \
fontconfig-devel \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
smartmontools \
sysstat >> rpm.log
elif [ ${DB_VERSION} = 11.2.0.4 ] && [ ${OS_VERSION} = linux6 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \
compat-libstdc++-33 \
compat-libcap1 \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
sysstat >> rpm.log
elif [ ${DB_VERSION} = 11.2.0.4 ] && [ ${OS_VERSION} = linux7 ]; then
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \
compat-libstdc++-33 \
compat-libcap1 \
elfutils-libelf \
elfutils-libelf-devel \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libXi \
libXtst \
make \
sysstat >> rpm.log
fi
echo "#################################" >> rpm.log
if [ `grep "not installed" $SCRIPT_DIR/rpm.log | wc -l` -gt 0 ]; then
echo -e "################################################### \033[5m"
echo -e "\033[33m some RPM package is not installed, please check! \033[0m"
echo "###################################################"
exit
else
cat $SCRIPT_DIR/rpm.log > install.log
rm -rf $SCRIPT_DIR/rpm.log
fi
echo "RPM is installed ----- SUCCEEDED" >> install.log
#-------------------------#
# Initializes system parameters
#-------------------------#
#ENV_BASE_DIR=/u01/app
ENV_ORACLE_BASE=$ENV_BASE_DIR/oracle
##set ENV_ORACLE_HOME #v2.0
if [ ${DB_VERSION} = "12.2.0.1" ];then
ENV_ORACLE_HOME=$ENV_ORACLE_BASE/product/12.2.0/db_1
elif [ ${DB_VERSION} = "11.2.0.4" ];then
ENV_ORACLE_HOME=$ENV_ORACLE_BASE/product/11.2
elif [ ${DB_VERSION} = "19.3.0.0" ];then
ENV_ORACLE_HOME=$ENV_ORACLE_BASE/product/19.3.0/db_1
else
echo "Error database version! please check again!"
exit
fi
#-------------------------#
# set memory variable
#-------------------------#
#ENV_NLS_LANG=AMERICAN_AMERICA.${NLS_LANG} #AMERICAN_AMERICA.ZHS16GBK
yum -y install bc
MemTotalKB=`awk '/MemTotal/{print $2}' /proc/meminfo`
MemTotalMB=`echo "scale=0;$MemTotalKB / 1024 * ${MemPercent} / 100"| bc`
#-------------------------#
#Configure the hostname,modify /etc/hosts file
#-------------------------#
if [ $host_name = "localhost.localdomain" ]; then
#To be updated
echo "current hostname is localhost.localdomain, please rename in file /etc/sysconfig/network"
if [ ${OS_VERSION} = linux6 ]; then
read -p "please input hostname: " INPUT_HOSTNAME
host_name=${INPUT_HOSTNAME}
sed -i "s/localhost.localdomain/${host_name}/g" /etc/sysconfig/network
hostname ${host_name}
cp /etc/hosts /etc/hosts.bak
echo "${hostip} ${host_name}" >> /etc/hosts
echo "modify /etc/hosts ----- SUCCEEDED" >> install.log
elif [ ${OS_VERSION} = linux7 ]; then
read -p "please input hostname: " INPUT_HOSTNAME
host_name=${INPUT_HOSTNAME}
sed -i "s/localhost.localdomain/${host_name}/g" /etc/hostname
hostname ${host_name}
cp /etc/hosts /etc/hosts.bak
echo "${hostip} ${host_name}" >> /etc/hosts
echo "modify /etc/hosts ----- SUCCEEDED" >> install.log
else
echo "OS VERSION error!!!"
exit
fi
else
if [ `grep ${host_name} /etc/hosts | wc -l` -gt 0 ]; then
echo "hostname ${host_name} is exist in file /etc/hosts ----- Not Modified" >> install.log
else
cp /etc/hosts /etc/hosts.bak
echo "${hostip} ${host_name}" >> /etc/hosts
echo "modify /etc/hosts ----- SUCCEEDED" >> install.log
fi
fi
#-------------------------#
#Configure the network
#-------------------------#
#Turn off the firewall
if [ ${OS_VERSION} = linux6 ]; then
#Turn off the firewall(Linux 6)
if [ `chkconfig --list | grep tables | grep on | wc -l` -gt 0 ]; then
service iptables stop
chkconfig --level 2345 iptables off
service ip6tables stop
chkconfig --level 2345 ip6tables off
service network restart
echo "Firewall closed ----- SUCCEEDED" >> install.log
else
echo "Firewall checked, not turned on ----- Not Modified" >> install.log
fi
elif [ ${OS_VERSION} = linux7 ]; then
#Turn off the firewall(Linux 7)
if [ `systemctl status firewalld.service | grep running | wc -l` -gt 0 ]; then
systemctl stop firewalld.service
systemctl disable firewalld.service
service network restart
echo "Firewall closed ----- SUCCEEDED" >> install.log
else
echo "Firewall checked, not turned on ----- Not Modified" >> install.log
fi
else
echo "OS VERSION error!!!"
exit
fi
#-------------------------#
#Turn off the NetworkManager
#-------------------------#
if [ ${OS_VERSION} = linux6 ]; then
#Turn off the NetworkManager(Linux 6)
if [ `chkconfig --list | grep NetworkManager | grep on | wc -l` -gt 0 ]; then
service NetworkManager stop
chkconfig --level 2345 NetworkManager off
service NetworkManager off
service network restart
echo "NetworkManager closed ----- SUCCEEDED" >> install.log
else
echo "NetworkManager checked, not turned on ----- Not Modified" >> install.log
fi
elif [ ${OS_VERSION} = linux7 ]; then
#Turn off the NetworkManager(Linux 7)
if [ `systemctl status NetworkManager.service | grep running | wc -l` -gt 0 ]; then
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
service network restart
echo "NetworkManager closed ----- SUCCEEDED" >> install.log
else
echo "NetworkManager checked, not turned on ----- Not Modified" >> install.log
fi
fi
#-------------------------#
#config NTP service
#-------------------------#
if [ ${OS_VERSION} = linux6 ]; then
# Config NTP service for Linux 5/6
if [ `cat /etc/ntp.conf | grep 10.0.1.33 | wc -l` -gt 0 ]; then
echo "NTP checked, already on ----- Not Modified" >> install.log
else
wget http://${SITE2}/Tools/NTP/ntp.conf -O /etc/ntp.conf
chkconfig ntpd on
service ntpd stop; ntpd -qg ; service ntpd start
echo "NTP configure ----- SUCCEEDED" >> install.log
fi
elif [ ${OS_VERSION} = linux7 ]; then
# Config NTP service for Linux 7
if [ `cat /etc/chrony.conf | grep 10.0.1.33 | wc -l` -gt 0 ]; then
echo "NTP checked, already on ----- Not Modified" >> install.log
else
wget http://${SITE2}/Tools/NTP/chrony.conf -O /etc/chrony.conf
systemctl enable chronyd.service
systemctl start chronyd.service
echo "NTP configure ----- SUCCEEDED" >> install.log
fi
fi
#-------------------------#
#config time synchronization v2.0
#-------------------------#
/usr/sbin/ntpdate -u ${DNS}
#如果不是虚拟机,设置硬件时钟同步
if [ `dmidecode | grep "Product" | grep "VMware" | wc -l` -eq 0 ]; then
echo '#!/bin/sh ' > /etc/sync_hw_clock.sh
echo '## Sync time from system time to hardware clock. Add by OracleInstall.sh. ${DATETIME}' >> /etc/sync_hw_clock.sh
echo '/usr/sbin/hwclock -w ' >> /etc/sync_hw_clock.sh
chmod +x /etc/sync_hw_clock.sh
echo '*/5 * * * * /etc/sync_hw_clock.sh > /dev/null 2>&1' >> /var/spool/cron/root
fi
#-------------------------#
#Create group
#-------------------------#
if [ `grep "^dba:" /etc/group | wc -l` -gt 0 ]; then
echo "dba group is exist ----- Not Modified" >> install.log
else
groupadd dba
echo "dba group is created ----- SUCCEEDED" >> install.log
fi
if [ `grep "^oinstall:" /etc/group | wc -l` -gt 0 ]; then
echo "oinstall group is exist ----- Not Modified" >> install.log
else
groupadd oinstall
echo "oinstall group is created ----- SUCCEEDED" >> install.log
fi
#-------------------------#
#Create user
#-------------------------#
if [ `grep "^oracle:" /etc/passwd | wc -l` -gt 0 ]; then
echo "oracle user is exist ----- Not Modified" >> install.log
else
useradd oracle -g oinstall -G dba
echo "oracle user is created ----- SUCCEEDED" >> install.log
echo "${ORAPASSWD}" |passwd --stdin oracle
echo "oracle password is updated ----- SUCCEEDED" >> install.log
fi
#-------------------------#
#Configure /etc/sysctl.conf file
# v3.1
#-------------------------#
# kernel.shmall取总内存的页数(每页4K),kernel.shmmax取内存同样大小数值
if [ ${OS_VERSION} = linux6 ]; then
if [ `grep "^net.core.wmem_max" /etc/sysctl.conf | wc -l` -gt 0 ]; then
echo "/etc/sysctl.conf file is modified ----- Not Modified" >> install.log
else
cp /etc/sysctl.conf /etc/sysctl.conf.bak
shmall=$(($MemTotalKB / 4))
# v4.0 修改512 --> 1024
shmmax=$(($MemTotalKB * 1024))
cat >> /etc/sysctl.conf<<EOF
# modify for oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
#kernel.shmall = ${shmall}
kernel.shmmax = ${shmmax}
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
kernel.panic_on_oops = 1
EOF
sysctl -p
echo "/etc/sysctl.conf file is modified ----- SUCCEEDED" >> install.log
fi
elif [ ${OS_VERSION} = linux7 ]; then
if [ -e /etc/sysctl.d/97-oracledatabase-sysctl.conf ] && [ `grep "^net.core.wmem_max" /etc/sysctl.d/97-oracledatabase-sysctl.conf | wc -l` -gt 0 ]; then
echo "/etc/sysctl.conf file is modified ----- Not Modified" >> install.log
else
shmall=$(($MemTotalKB / 4))
# v4.0
shmmax=$(($MemTotalKB * 1024))
cat >> /etc/sysctl.d/97-oracledatabase-sysctl.conf<<EOF
# modify for oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
#kernel.shmall = ${shmall}
kernel.shmmax = ${shmmax}
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
kernel.panic_on_oops = 1
EOF
/sbin/sysctl --system
echo "/etc/sysctl.conf file is modified ----- SUCCEEDED" >> install.log
fi
fi
##-------------------------#
##关闭透明大页
## v4.0
##-------------------------#
#if [ ${OS_VERSION} = linux6 ]; then
#
#elif [ ${OS_VERSION} = linux7 ]; then
# if [ `grep AnonHugePages /proc/meminfo | grep -v grep | awk '{print $2}'` -gt 0 ]; then
# echo "/etc/default/grub file is modified ----- Not Modified" >> install.log
# else
# cp /etc/default/grub /etc/default/grub.bak
# cat >> /etc/default/grub<<EOF
#
## modify for oracle
#GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg_root/lv_root rd.lvm.lv=vg_root/lv_swap rhgb quiet transparent_hugepage=never"
#EOF
# grub2-mkconfig -o /boot/grub2/grub.cfg
# echo "/etc/default/grub file is modified ----- SUCCEEDED" >> install.log
# fi
#fi
#-------------------------#
#Configure /etc/security/limits.conf file
#-------------------------#
#if [ `grep "^oracle soft nproc 2047" /etc/security/limits.conf | wc -l` -gt 0 ]
if [ ${DB_VERSION} = 11.2.0.4 ]; then
if [ `grep "16384" /etc/security/limits.conf | wc -l` -gt 0 ]; then
echo "/etc/security/limits.conf file is modified ----- Not Modified" >> install.log
else
cp /etc/security/limits.conf /etc/security/limits.conf.bak
cat >> /etc/security/limits.conf<<EOF
# modify for oracle
* hard nofile 65536
* soft nofile 65536
* hard nproc 16384
* soft nproc 16384
* hard stack 32768
* soft stack 10240
EOF
echo "/etc/security/limits.conf file is modified ----- SUCCEEDED" >> install.log
fi
elif [[ ${DB_VERSION} = 12.2.0.1 ]] || [[ ${DB_VERSION} = 19.3.0.0 ]]; then
if [ `grep "16384" /etc/security/limits.conf | wc -l` -gt 0 ]; then
echo "/etc/security/limits.conf file is modified ----- Not Modified" >> install.log
else
cp /etc/security/limits.conf /etc/security/limits.conf.bak
cat >> /etc/security/limits.conf<<EOF
# modify for oracle
* hard nofile 65536
* soft nofile 65536
* hard nproc 16384
* soft nproc 16384
* hard stack 32768
* soft stack 10240
oracle soft memlock 3145728
oracle hard memlock 3145728
EOF
echo "/etc/security/limits.conf file is modified ----- SUCCEEDED" >> install.log
fi
fi
#-------------------------#
#Configure /etc/pam.d/login file
#-------------------------#
if [ `grep "pam_limits.so" /etc/pam.d/login | wc -l` -gt 0 ]; then
echo "/etc/pam.d/login file is modified ----- Not Modified" >> install.log
else
cp /etc/pam.d/login /etc/pam.d/login.bak
echo "session required pam_limits.so" >> /etc/pam.d/login
echo "/etc/pam.d/login file is modified ----- SUCCEEDED" >> install.log
fi
#-------------------------#
#Create oracle directory
#-------------------------#
if [ ! -d "${ENV_ORACLE_HOME}" ]; then
mkdir -p ${ENV_ORACLE_HOME}
chown -R oracle:oinstall ${ENV_BASE_DIR}
chmod -R 775 ${ENV_BASE_DIR}
echo "directory ${ENV_ORACLE_HOME} is created ----- SUCCEEDED" >> install.log
else
echo "directory ${ENV_ORACLE_HOME} is exist ----- Not Modified" >> install.log
fi
#-------------------------#
#Create OraInventory
#-------------------------#
if [ ${DB_VERSION} = 12.2.0.1 ]; then
touch /etc/oraInst.loc
echo "inventory_loc=/opt/oraInventory" >> /etc/oraInst.loc
echo "inst_group=oinstall" >> /etc/oraInst.loc
mkdir -p /opt/oraInventory
chmod -R a+rw /opt/oraInventory
fi
#-------------------------#
#Configure oracle's ENV
#-------------------------#
if [ ${DB_VERSION} = 12.2.0.1 ]; then
if [ `grep "export ORACLE" /home/oracle/.bash_profile | wc -l` -gt 0 ]; then
echo "variable ORACLE ENV is exist ----- Not Modified" >> install.log
else
cp /home/oracle/.bash_profile /home/oracle/.bash_profile.bak
echo "" >> /home/oracle/.bash_profile
echo "export ORACLE_SID=${ORACLE_SID}" >> /home/oracle/.bash_profile
echo "export GLOBLE_DBName=${GLOBLE_DBName}" >> /home/oracle/.bash_profile
echo "export ORACLE_BASE=${ENV_ORACLE_BASE}" >> /home/oracle/.bash_profile
echo 'export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1' >> /home/oracle/.bash_profile
echo 'export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH' >> /home/oracle/.bash_profile
#v1.3 <db_name>/<ORACLE_SID>
echo "TRACE=$ENV_ORACLE_BASE/diag/rdbms/$GLOBLE_DBName/$ORACLE_SID/trace" >> /home/oracle/.bash_profile
source /home/oracle/.bash_profile
echo "variable ORACLE ENV is modified ----- SUCCEEDED" >> install.log
fi
elif [ ${DB_VERSION} = 11.2.0.4 ]; then
if [ `grep "export ORACLE" /home/oracle/.bash_profile | wc -l` -gt 0 ]; then
echo "variable ORACLE ENV is exist ----- Not Modified" >> install.log
else
cp /home/oracle/.bash_profile /home/oracle/.bash_profile.bak
echo "" >> /home/oracle/.bash_profile
echo "export ORACLE_SID=${ORACLE_SID}" >> /home/oracle/.bash_profile
echo "export GLOBLE_DBName=${GLOBLE_DBName}" >> /home/oracle/.bash_profile
echo "export ORACLE_BASE=${ENV_ORACLE_BASE}" >> /home/oracle/.bash_profile
echo 'export ORACLE_HOME=$ORACLE_BASE/product/11.2' >> /home/oracle/.bash_profile
echo 'export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH' >> /home/oracle/.bash_profile
#v1.3 <db_name>/<ORACLE_SID>
echo "TRACE=$ENV_ORACLE_BASE/diag/rdbms/$GLOBLE_DBName/$ORACLE_SID/trace" >> /home/oracle/.bash_profile
source /home/oracle/.bash_profile
echo "variable ORACLE ENV is modified ----- SUCCEEDED" >> install.log
fi
elif [ ${DB_VERSION} = 19.3.0.0 ]; then
if [ `grep "export ORACLE" /home/oracle/.bash_profile | wc -l` -gt 0 ]; then
echo "variable ORACLE ENV is exist ----- Not Modified" >> install.log
else
cp /home/oracle/.bash_profile /home/oracle/.bash_profile.bak
echo "" >> /home/oracle/.bash_profile
echo "export ORACLE_SID=${ORACLE_SID}" >> /home/oracle/.bash_profile
echo "export GLOBLE_DBName=${GLOBLE_DBName}" >> /home/oracle/.bash_profile
echo "export ORACLE_BASE=${ENV_ORACLE_BASE}" >> /home/oracle/.bash_profile
echo 'export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1' >> /home/oracle/.bash_profile
echo 'export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH' >> /home/oracle/.bash_profile
echo "TRACE=$ENV_ORACLE_BASE/diag/rdbms/$GLOBLE_DBName/$ORACLE_SID/trace" >> /home/oracle/.bash_profile
source /home/oracle/.bash_profile
echo "variable ORACLE ENV is modified ----- SUCCEEDED" >> install.log
fi
fi
#-------------------------#
# judge software package directory
# v1.0
# v3.0
# v4.0
#-------------------------#
if [[ $INPUT_CHOICE = "createDB" ]] || [[ $INPUT_CHOICE = "installSoftwareOnly" ]];then
read -p "Do you want to use the default path of the database package (y/n) [y]? " INPUT_DIR
if [[ -z "${INPUT_DIR}" ]] || [[ $INPUT_DIR = "/tmp" ]] || [[ $INPUT_DIR = "y" ]] || [[ $INPUT_DIR = "Y" ]];then
SOFTWATE_DIR=/tmp
#download database software package v2.0
if [ ${DB_VERSION} = "11.2.0.4" ];then
unzip -o ${SOFTWATE_DIR}/p13390677_112040_Linux-x86-64_1of7.zip -d ${SOFTWATE_DIR}
unzip -o ${SOFTWATE_DIR}/p13390677_112040_Linux-x86-64_2of7.zip -d ${SOFTWATE_DIR}
elif [ ${DB_VERSION} = "12.2.0.1" ];then
unzip -o ${SOFTWATE_DIR}/linuxx64_12201_database.zip -d ${SOFTWATE_DIR}
elif [ ${DB_VERSION} = "19.3.0.0" ];then
unzip -o ${SOFTWATE_DIR}/LINUX.X64_193000_db_home.zip -d ${ENV_ORACLE_HOME}
chown -R oracle:oinstall ${ENV_ORACLE_HOME}
else
echo "Error database version! please check again!"
exit
fi
elif [[ $INPUT_DIR = "n" ]] || [[ $INPUT_DIR = "N" ]];then
read -p "please input software directory: " SOFTWATE_DIR
echo -e "\033[37;31;5mMake sure the database installation package is in the ${SOFTWATE_DIR} directory\033[39;49;0m"
#download database software package v2.0
if [ ${DB_VERSION} = "11.2.0.4" ];then
unzip -o ${SOFTWATE_DIR}/p13390677_112040_Linux-x86-64_1of7.zip -d ${SOFTWATE_DIR}
unzip -o ${SOFTWATE_DIR}/p13390677_112040_Linux-x86-64_2of7.zip -d ${SOFTWATE_DIR}
elif [ ${DB_VERSION} = "12.2.0.1" ];then
unzip -o ${SOFTWATE_DIR}/linuxx64_12201_database.zip -d ${SOFTWATE_DIR}
elif [ ${DB_VERSION} = "19.3.0.0" ];then
unzip -o ${SOFTWATE_DIR}/LINUX.X64_193000_db_home.zip -d ${ENV_ORACLE_HOME}
chown -R oracle:oinstall ${ENV_ORACLE_HOME}
else
echo "Error database version! please check again!"
exit
fi
else
SOFTWATE_DIR=$INPUT_DIR
echo -e "\033[37;31;5mMake sure the database installation package is in the ${SOFTWATE_DIR} directory\033[39;49;0m"
#download database software package v2.0
if [ ${DB_VERSION} = "11.2.0.4" ];then
unzip -o ${SOFTWATE_DIR}/p13390677_112040_Linux-x86-64_1of7.zip -d ${SOFTWATE_DIR}
unzip -o ${SOFTWATE_DIR}/p13390677_112040_Linux-x86-64_2of7.zip -d ${SOFTWATE_DIR}
elif [ ${DB_VERSION} = "12.2.0.1" ];then
unzip -o ${SOFTWATE_DIR}/linuxx64_12201_database.zip -d ${SOFTWATE_DIR}
elif [ ${DB_VERSION} = "19.3.0.0" ];then
unzip -o ${SOFTWATE_DIR}/LINUX.X64_193000_db_home.zip -d ${ENV_ORACLE_HOME}
chown -R oracle:oinstall ${ENV_ORACLE_HOME}
else
echo "Error database version! please check again!"
exit
fi
fi
fi
#Check installation log
echo "#################################"
cat install.log
echo "#################################"
function installDBsoftware(){
#定义install应答文件
if [ ${DB_VERSION} = 12.2.0.1 ]; then
cat > db_install.rsp<<EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
oracle.install.option=INSTALL_DB_SWONLY
#ORACLE_HOSTNAME=$host_name
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=${ENV_BASE_DIR}/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=$ENV_ORACLE_HOME
ORACLE_BASE=$ENV_ORACLE_BASE
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
#oracle.install.db.DBA_GROUP=dba
#oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.isRACOneInstall=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=$GLOBLE_DBName
oracle.install.db.config.starterdb.SID=$ORACLE_SID
oracle.install.db.ConfigureAsContainerDB=false
#oracle.install.db.config.starterdb.characterSet=${NLS_LANG}
oracle.install.db.config.starterdb.memoryOption=true
#oracle.install.db.config.starterdb.memoryLimit=$MemTotalMB
oracle.install.db.config.starterdb.installExampleSchemas=false
#oracle.install.db.config.starterdb.enableSecuritySettings=false
#oracle.install.db.config.starterdb.password.ALL=$SYSTEM_PASSWD
oracle.install.db.config.starterdb.managementOption=DEFAULT
#oracle.install.db.config.starterdb.control=DB_CONTROL
#oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
#oracle.install.db.config.starterdb.automatedBackup.enable=false
DECLINE_SECURITY_UPDATES=true
#oracle.installer.autoupdates.option=SKIP_UPDATES
EOF
elif [ ${DB_VERSION} = 11.2.0.4 ]; then
cat > db_install.rsp<<EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=$host_name
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=${ENV_BASE_DIR}/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=$ENV_ORACLE_HOME
ORACLE_BASE=$ENV_ORACLE_BASE
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.isRACOneInstall=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=$GLOBLE_DBName
oracle.install.db.config.starterdb.SID=$ORACLE_SID
#oracle.install.db.config.starterdb.characterSet=${NLS_LANG}
oracle.install.db.config.starterdb.memoryOption=true
#oracle.install.db.config.starterdb.memoryLimit=$MemTotalMB
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=false
#oracle.install.db.config.starterdb.password.ALL=$SYSTEM_PASSWD
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.automatedBackup.enable=false
DECLINE_SECURITY_UPDATES=true
oracle.installer.autoupdates.option=SKIP_UPDATES
EOF
elif [ ${DB_VERSION} = 19.3.0.0 ]; then
cat > db_install.rsp<<EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
oracle.install.option=INSTALL_DB_SWONLY
#ORACLE_HOSTNAME=$host_name
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=${ENV_BASE_DIR}/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=$ENV_ORACLE_HOME
ORACLE_BASE=$ENV_ORACLE_BASE
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
#oracle.install.db.DBA_GROUP=dba
#oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.isRACOneInstall=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=$GLOBLE_DBName
oracle.install.db.config.starterdb.SID=$ORACLE_SID
oracle.install.db.ConfigureAsContainerDB=false
#oracle.install.db.config.starterdb.characterSet=${NLS_LANG}
oracle.install.db.config.starterdb.memoryOption=true
#oracle.install.db.config.starterdb.memoryLimit=$MemTotalMB
oracle.install.db.config.starterdb.installExampleSchemas=false
#oracle.install.db.config.starterdb.enableSecuritySettings=false
#oracle.install.db.config.starterdb.password.ALL=$SYSTEM_PASSWD
oracle.install.db.config.starterdb.managementOption=DEFAULT
#oracle.install.db.config.starterdb.control=DB_CONTROL
#oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
#oracle.install.db.config.starterdb.automatedBackup.enable=false
DECLINE_SECURITY_UPDATES=true
#oracle.installer.autoupdates.option=SKIP_UPDATES
EOF
fi
#Install Database software
chown oracle.oinstall $SCRIPT_DIR/db_install.rsp
if [[ ${DB_VERSION} = 12.2.0.1 ]] || [[ ${DB_VERSION} = 11.2.0.4 ]]; then
su - oracle <<EOF
cd $SOFTWATE_DIR/database;
./runInstaller -silent -force -ignoreSysPrereqs -responseFile $SCRIPT_DIR/db_install.rsp -ignorePrereq
EOF
elif [ ${DB_VERSION} = 19.3.0.0 ]; then
su - oracle <<EOF
cd ${ENV_ORACLE_HOME};
./runInstaller -silent -force -responseFile $SCRIPT_DIR/db_install.rsp -ignorePrereq
EOF
fi
if [ ${DB_VERSION} = 12.2.0.1 ]; then
#睡眠10分钟
sleep 10m
sh $ENV_BASE_DIR/oracle/product/12.2.0/db_1/root.sh #v2.0
elif [ ${DB_VERSION} = 11.2.0.4 ]; then
#睡眠10分钟
sleep 10m
sh $ENV_BASE_DIR/oraInventory/orainstRoot.sh #v1.1
sh $ENV_BASE_DIR/oracle/product/11.2/root.sh #v1.1
elif [ ${DB_VERSION} = 19.3.0.0 ]; then
#睡眠10分钟
sleep 10m
sh $ENV_BASE_DIR/oraInventory/orainstRoot.sh #v4.0
sh $ENV_BASE_DIR/oracle/product/19.3.0/db_1/root.sh
fi
echo "Database software is installed ----- SUCCEEDED" >> install.log
}
function createDB(){
#定义dbca应答文件
if [ ${DB_VERSION} = 12.2.0.1 ]; then
cat > dbca.rsp<<EOF
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=${GLOBLE_DBName}
sid=${ORACLE_SID}
databaseConfigType=SI
createAsContainerDatabase=false
templateName=ORCL_TEMPLATE.dbt
storageType=FS
datafileDestination=${ENV_ORACLE_BASE}/oradata/${ORACLE_SID}
characterSet=${NLS_LANG}
nationalCharacterSet=${NLS_NCHAR_CHAR}
memoryPercentage=${MemPercent}
totalMemory=${MemTotalMB}
initParams=audit_trail=none
#automaticMemoryManagement=TRUE
sysPassword=${SYSTEM_PASSWD}
systemPassword=${SYSTEM_PASSWD}
databaseType=OLTP
#variables=DB_UNIQUE_NAME=${ORACLE_SID},ORACLE_BASE=${ENV_ORACLE_BASE},PDB_NAME=,DB_NAME=${ORACLE_SID},ORACLE_HOME=${ENV_ORACLE_HOME},SID=${ORACLE_SID}
EOF
elif [ ${DB_VERSION} = 11.2.0.4 ]; then
cat > dbca.rsp<<EOF
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "$GLOBLE_DBName"
SID = "$ORACLE_SID"
TEMPLATENAME = "ORCL_TEMPLATE.dbt"
STORAGETYPE=FS
DATAFILEDESTINATION = "$ENV_ORACLE_BASE/oradata/$ORACLE_SID"
CHARACTERSET = "${NLS_LANG}"
NATIONALCHARACTERSET= "${NLS_NCHAR_CHAR}"
LISTENERS = LISTENER
MEMORYPERCENTAGE = "${MemPercent}"
TOTALMEMORY = "$MemTotalMB"
#AUTOMATICMEMORYMANAGEMENT = "TRUE"
SYSPASSWORD = "$SYSTEM_PASSWD"
SYSTEMPASSWORD = "$SYSTEM_PASSWD"
databaseType=OLTP
EOF
elif [ ${DB_VERSION} = 19.3.0.0 ]; then
cat > dbca.rsp<<EOF
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=${GLOBLE_DBName}
sid=${ORACLE_SID}
databaseConfigType=SI
createAsContainerDatabase=false
templateName=ORCL_TEMPLATE.dbt
storageType=FS
datafileDestination=${ENV_ORACLE_BASE}/oradata/${ORACLE_SID}
characterSet=${NLS_LANG}
nationalCharacterSet=${NLS_NCHAR_CHAR}
memoryPercentage=${MemPercent}
totalMemory=${MemTotalMB}
initParams=audit_trail=none
#automaticMemoryManagement=TRUE
sysPassword=${SYSTEM_PASSWD}
systemPassword=${SYSTEM_PASSWD}
databaseType=OLTP
#variables=DB_UNIQUE_NAME=${ORACLE_SID},ORACLE_BASE=${ENV_ORACLE_BASE},PDB_NAME=,DB_NAME=${ORACLE_SID},ORACLE_HOME=${ENV_ORACLE_HOME},SID=${ORACLE_SID}
EOF
fi
#定义dbca模板文件
if [ ${DB_VERSION} = 12.2.0.1 ]; then
cat > $ENV_ORACLE_HOME/assistants/dbca/templates/ORCL_TEMPLATE.dbt<<EOF
<DatabaseTemplate name="ORCL_TEMPLATE" description=" " version="12.2.0.1.0">
<CommonAttributes>
<option name="OMS" value="false"/>
<option name="JSERVER" value="true"/>
<option name="SPATIAL" value="false"/>
<option name="IMEDIA" value="true"/>
<option name="XDB_PROTOCOLS" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="ORACLE_TEXT" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="SAMPLE_SCHEMA" value="false"/>
<option name="CWMLITE" value="false">
<tablespace id="SYSAUX"/>
</option>
<option name="EM_REPOSITORY" value="false">
<tablespace id="SYSAUX"/>
</option>
<option name="APEX" value="true"/>
<option name="OWB" value="false"/>
<option name="DV" value="false"/>
</CommonAttributes>
<Variables/>
<CustomScripts Execute="false"/>
<InitParamAttributes>
<InitParams>
<initParam name="db_name" value="$ORACLE_SID"/>
<initParam name="db_domain" value=""/>
<initParam name="dispatchers" value="(PROTOCOL=TCP) (SERVICE={SID}XDB)"/>
<initParam name="audit_file_dest" value="{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump"/>
<initParam name="compatible" value="12.2.0"/>
<initParam name="remote_login_passwordfile" value="EXCLUSIVE"/>
<initParam name="log_archive_dest_1" value="'LOCATION=$ENV_ORACLE_BASE/oradata/$ORACLE_SID'"/>
<initParam name="processes" value="2000"/>
<initParam name="undo_tablespace" value="UNDOTBS1"/>
<initParam name="control_files" value="("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control02.ctl")"/>
<initParam name="diagnostic_dest" value="{ORACLE_BASE}"/>
<initParam name="audit_trail" value="none"/>
<initParam name="log_archive_format" value="%t_%s_%r.dbf"/>
<initParam name="sessions" value="2205"/>
<initParam name="db_block_size" value="8" unit="KB"/>
<initParam name="open_cursors" value="300"/>
</InitParams>
<MiscParams>
<databaseType>OLTP</databaseType>
<maxUserConn>20</maxUserConn>
<percentageMemTOSGA>80</percentageMemTOSGA>
<customSGA>false</customSGA>
<characterSet>${NLS_LANG}</characterSet>
<nationalCharacterSet>${NLS_NCHAR_CHAR}</nationalCharacterSet>
<archiveLogMode>$ARCH_MODE</archiveLogMode>
<initParamFileName>{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/pfile/init.ora</initParamFileName>
</MiscParams>
<SPfile useSPFile="true">{ORACLE_HOME}/dbs/spfile{SID}.ora</SPfile>
</InitParamAttributes>
<StorageAttributes>
<ControlfileAttributes id="Controlfile">
<maxDatafiles>100</maxDatafiles>
<maxLogfiles>16</maxLogfiles>
<maxLogMembers>3</maxLogMembers>
<maxLogHistory>1</maxLogHistory>
<maxInstances>8</maxInstances>
<image name="control01.ctl" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
<image name="control02.ctl" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</ControlfileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/sysaux01.dbf">
<tablespace>SYSAUX</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">2000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">10240</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf">
<tablespace>SYSTEM</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">2000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">10240</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/temp01.dbf">
<tablespace>TEMP</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">5000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">640</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/undotbs01.dbf">
<tablespace>UNDOTBS1</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">5000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">5120</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf">
<tablespace>USERS</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">500</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">1280</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<TablespaceAttributes id="SYSAUX">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>50</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/sysaux01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="SYSTEM">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>3</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>50</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>-1</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="TEMP">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>true</temporary>
<defaultTemp>true</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>0</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>0</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/temp01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="UNDOTBS1">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>true</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">512</initSize>
<increment unit="KB">512</increment>
<incrementPercent>50</incrementPercent>
<minExtends>8</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">512</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/undotbs01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="USERS">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">128</initSize>
<increment unit="KB">128</increment>
<incrementPercent>0</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">128</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<RedoLogGroupAttributes id="1">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo01.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="2">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo02.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="3">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo03.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
</StorageAttributes>
</DatabaseTemplate>
EOF
elif [ ${DB_VERSION} = 11.2.0.4 ]; then
cat > $ENV_ORACLE_HOME/assistants/dbca/templates/ORCL_TEMPLATE.dbt<<EOF
<DatabaseTemplate name="ORCL_TEMPLATE" description=" " version="11.2.0.0.0">
<CommonAttributes>
<option name="OMS" value="false"/>
<option name="JSERVER" value="true"/>
<option name="SPATIAL" value="false"/>
<option name="IMEDIA" value="true"/>
<option name="XDB_PROTOCOLS" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="ORACLE_TEXT" value="true">
<tablespace id="SYSAUX"/>
</option>
<option name="SAMPLE_SCHEMA" value="false"/>
<option name="CWMLITE" value="false">
<tablespace id="SYSAUX"/>
</option>
<option name="EM_REPOSITORY" value="false">
<tablespace id="SYSAUX"/>
</option>
<option name="APEX" value="true"/>
<option name="OWB" value="false"/>
<option name="DV" value="false"/>
</CommonAttributes>
<Variables/>
<CustomScripts Execute="false"/>
<InitParamAttributes>
<InitParams>
<initParam name="db_name" value="$ORACLE_SID"/>
<initParam name="db_domain" value=""/>
<initParam name="dispatchers" value="(PROTOCOL=TCP) (SERVICE={SID}XDB)"/>
<initParam name="audit_file_dest" value="{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump"/>
<initParam name="compatible" value="11.2.0.4.0"/>
<initParam name="remote_login_passwordfile" value="EXCLUSIVE"/>
<initParam name="log_archive_dest_1" value="'LOCATION=$ENV_ORACLE_BASE/oradata/$ORACLE_SID'"/>
<initParam name="processes" value="2000"/>
<initParam name="undo_tablespace" value="UNDOTBS1"/>
<initParam name="control_files" value="("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control02.ctl")"/>
<initParam name="diagnostic_dest" value="{ORACLE_BASE}"/>
<initParam name="audit_trail" value="none"/>
<initParam name="log_archive_format" value="%t_%s_%r.dbf"/>
<initParam name="sessions" value="2205"/>
<initParam name="db_block_size" value="8" unit="KB"/>
<initParam name="open_cursors" value="300"/>
</InitParams>
<MiscParams>
<databaseType>OLTP</databaseType>
<maxUserConn>20</maxUserConn>
<percentageMemTOSGA>80</percentageMemTOSGA>
<customSGA>false</customSGA>
<characterSet>${NLS_LANG}</characterSet>
<nationalCharacterSet>${NLS_NCHAR_CHAR}</nationalCharacterSet>
<archiveLogMode>$ARCH_MODE</archiveLogMode>
<initParamFileName>{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/pfile/init.ora</initParamFileName>
</MiscParams>
<SPfile useSPFile="true">{ORACLE_HOME}/dbs/spfile{SID}.ora</SPfile>
</InitParamAttributes>
<StorageAttributes>
<ControlfileAttributes id="Controlfile">
<maxDatafiles>100</maxDatafiles>
<maxLogfiles>16</maxLogfiles>
<maxLogMembers>3</maxLogMembers>
<maxLogHistory>1</maxLogHistory>
<maxInstances>8</maxInstances>
<image name="control01.ctl" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
<image name="control02.ctl" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</ControlfileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/sysaux01.dbf">
<tablespace>SYSAUX</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">2000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">10240</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf">
<tablespace>SYSTEM</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">2000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">10240</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/temp01.dbf">
<tablespace>TEMP</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">5000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">640</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/undotbs01.dbf">
<tablespace>UNDOTBS1</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">5000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">5120</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf">
<tablespace>USERS</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">500</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">1280</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<TablespaceAttributes id="SYSAUX">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>50</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/sysaux01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="SYSTEM">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>3</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>50</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>-1</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="TEMP">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>true</temporary>
<defaultTemp>true</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>0</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>0</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/temp01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="UNDOTBS1">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>true</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">512</initSize>
<increment unit="KB">512</increment>
<incrementPercent>50</incrementPercent>
<minExtends>8</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">512</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/undotbs01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="USERS">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">128</initSize>
<increment unit="KB">128</increment>
<incrementPercent>0</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">128</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<RedoLogGroupAttributes id="1">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo01.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="2">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo02.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="3">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo03.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
</StorageAttributes>
</DatabaseTemplate>
EOF
elif [ ${DB_VERSION} = 19.3.0.0 ]; then
cat > $ENV_ORACLE_HOME/assistants/dbca/templates/ORCL_TEMPLATE.dbt<<EOF
<DatabaseTemplate name="ORCL_TEMPLATE" description="" version="19.0.0.0.0">
<CommonAttributes>
<option name="OMS" value="false" includeInPDBs="false"/>
<option name="JSERVER" value="true" includeInPDBs="false"/>
<option name="SPATIAL" value="true" includeInPDBs="false"/>
<option name="IMEDIA" value="true" includeInPDBs="false"/>
<option name="ORACLE_TEXT" value="true" includeInPDBs="false">
<tablespace id="SYSAUX"/>
</option>
<option name="SAMPLE_SCHEMA" value="false" includeInPDBs="false"/>
<option name="CWMLITE" value="true" includeInPDBs="false">
<tablespace id="SYSAUX"/>
</option>
<option name="APEX" value="false" includeInPDBs="false"/>
<option name="DV" value="false" includeInPDBs="false"/>
</CommonAttributes>
<Variables/>
<CustomScripts Execute="false"/>
<InitParamAttributes>
<InitParams>
<initParam name="db_name" value="$ORACLE_SID"/>
<initParam name="dispatchers" value="(PROTOCOL=TCP) (SERVICE={SID}XDB)"/>
<initParam name="audit_file_dest" value="{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump"/>
<initParam name="compatible" value="19.0.0"/>
<initParam name="remote_login_passwordfile" value="EXCLUSIVE"/>
<initParam name="log_archive_dest_1" value="'LOCATION=$ENV_ORACLE_BASE/oradata/$ORACLE_SID'"/>
<initParam name="processes" value="5120"/>
<initParam name="local_listener" value="LISTENER_WXBD"/>
<initParam name="undo_tablespace" value="UNDOTBS1"/>
<initParam name="control_files" value="("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control02.ctl")"/>
<initParam name="diagnostic_dest" value="{ORACLE_BASE}"/>
<initParam name="audit_trail" value="none"/>
<initParam name="nls_territory" value="AMERICA"/>
<initParam name="log_archive_format" value="%t_%s_%r.dbf"/>
<initParam name="db_block_size" value="8192"/>
<initParam name="open_cursors" value="300"/>
<initParam name="nls_language" value="AMERICAN"/>
</InitParams>
<MiscParams>
<databaseType>OLTP</databaseType>
<maxUserConn>20</maxUserConn>
<percentageMemTOSGA>80</percentageMemTOSGA>
<customSGA>false</customSGA>
<characterSet>${NLS_LANG}</characterSet>
<nationalCharacterSet>${NLS_NCHAR_CHAR}</nationalCharacterSet>
<archiveLogMode>$ARCH_MODE</archiveLogMode>
<initParamFileName>{ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/pfile/init.ora</initParamFileName>
</MiscParams>
<SPfile useSPFile="true">{ORACLE_HOME}/dbs/spfile{SID}.ora</SPfile>
</InitParamAttributes>
<StorageAttributes>
<ControlfileAttributes id="Controlfile">
<maxDatafiles>100</maxDatafiles>
<maxLogfiles>16</maxLogfiles>
<maxLogMembers>3</maxLogMembers>
<maxLogHistory>1</maxLogHistory>
<maxInstances>8</maxInstances>
<image name="control01.ctl" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
<image name="control02.ctl" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</ControlfileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/sysaux01.dbf">
<tablespace>SYSAUX</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">2000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">10240</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf">
<tablespace>SYSTEM</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">2000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">10240</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/temp01.dbf">
<tablespace>TEMP</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">5000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">640</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/undotbs01.dbf">
<tablespace>UNDOTBS1</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">5000</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">5120</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<DatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf">
<tablespace>USERS</tablespace>
<temporary>false</temporary>
<online>true</online>
<status>0</status>
<size unit="MB">500</size>
<reuse>true</reuse>
<autoExtend>true</autoExtend>
<increment unit="KB">1280</increment>
<maxSize unit="MB">-1</maxSize>
</DatafileAttributes>
<TablespaceAttributes id="SYSAUX">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>50</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/sysaux01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="SYSTEM">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>3</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>50</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>-1</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/system01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="TEMP">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>true</temporary>
<defaultTemp>true</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">64</initSize>
<increment unit="KB">64</increment>
<incrementPercent>0</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>0</maxExtends>
<minExtendsSize unit="KB">64</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/temp01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="UNDOTBS1">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>true</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">512</initSize>
<increment unit="KB">512</increment>
<incrementPercent>50</incrementPercent>
<minExtends>8</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">512</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/undotbs01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<TablespaceAttributes id="USERS">
<online>true</online>
<offlineMode>1</offlineMode>
<readOnly>false</readOnly>
<temporary>false</temporary>
<defaultTemp>false</defaultTemp>
<undo>false</undo>
<local>true</local>
<blockSize>-1</blockSize>
<allocation>1</allocation>
<uniAllocSize unit="KB">-1</uniAllocSize>
<initSize unit="KB">128</initSize>
<increment unit="KB">128</increment>
<incrementPercent>0</incrementPercent>
<minExtends>1</minExtends>
<maxExtends>4096</maxExtends>
<minExtendsSize unit="KB">128</minExtendsSize>
<logging>true</logging>
<recoverable>false</recoverable>
<maxFreeSpace>0</maxFreeSpace>
<autoSegmentMgmt>true</autoSegmentMgmt>
<bigfile>false</bigfile>
<datafilesList>
<TablespaceDatafileAttributes id="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/users01.dbf">
<id>-1</id>
</TablespaceDatafileAttributes>
</datafilesList>
</TablespaceAttributes>
<RedoLogGroupAttributes id="1">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo01.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="2">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo02.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
<RedoLogGroupAttributes id="3">
<reuse>false</reuse>
<fileSize unit="MB">200</fileSize>
<Thread>1</Thread>
<member ordinal="0" memberName="redo03.log" filepath="{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/"/>
</RedoLogGroupAttributes>
</StorageAttributes>
</DatabaseTemplate>
EOF
fi
#Create Database
chown oracle.oinstall $SCRIPT_DIR/dbca.rsp
chown oracle.oinstall $ENV_ORACLE_HOME/assistants/dbca/templates/ORCL_TEMPLATE.dbt
if [[ ${DB_VERSION} = 12.2.0.1 ]] || [[ ${DB_VERSION} = 19.3.0.0 ]]; then
su - oracle << EOF
cd $ENV_ORACLE_HOME/bin
./dbca -silent -createDatabase -responseFile $SCRIPT_DIR/dbca.rsp
EOF
elif [ ${DB_VERSION} = 11.2.0.4 ]; then
su - oracle << EOF
cd $ENV_ORACLE_HOME/bin
./dbca -silent -responseFile $SCRIPT_DIR/dbca.rsp
EOF
fi
echo "Database is created ----- SUCCEEDED" >> install.log
#Install listence
if [[ ${DB_VERSION} = 12.2.0.1 ]] || [[ ${DB_VERSION} = 11.2.0.4 ]]; then
su - oracle <<EOF
cd $ENV_ORACLE_HOME/bin
./netca -silent -responseFile $SOFTWATE_DIR/database/response/netca.rsp
EOF
elif [ ${DB_VERSION} = 19.3.0.0 ]; then
su - oracle <<EOF
cd $ENV_ORACLE_HOME/bin
./netca -silent -responseFile ${ENV_ORACLE_HOME}/assistants/netca/netca.rsp
EOF
fi
echo "listence is created ----- SUCCEEDED" >> install.log
#add for solve ORA-28040 with 12c v2.0
if [[ ${DB_VERSION} = 12.2.0.1 ]] || [[ ${DB_VERSION} = 19.3.0.0 ]]; then
echo "" >> $ENV_ORACLE_HOME/network/admin/sqlnet.ora
>> $ENV_ORACLE_HOME/network/admin/sqlnet.ora
echo "SQLNET.ALLOWED_LOGON_VERSION=8" >> $ENV_ORACLE_HOME/network/admin/sqlnet.ora
fi
#modify user PASSWORD_LIFE_TIME UNLIMITED;turn off audit
su - oracle -c "sqlplus -s / as sysdba" <<EOF
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
alter system set audit_sys_operations=FALSE scope=spfile;
alter system set audit_trail=none scope=spfile;
shutdown immediate;
EXIT
EOF
su - oracle -c "sqlplus -s / as sysdba" <<EOF
startup
alter user system identified by ${SYSTEM_PASSWD};
EXIT
EOF
}
function endConfig(){
#set send mail v2.0
service sendmail stop
chkconfig sendmail off
service postfix stop
chkconfig postfix off
echo "" >> /etc/hosts
echo "10.0.1.8 mail.longigroup.com" >> /etc/hosts
echo "10.0.1.9 mail.longigroup.com" >> /etc/hosts
echo "" >> /etc/hosts
echo "set from=netmaster@longigroup.com" >> /etc/mail.rc
echo "set smtp=mail.longigroup.com" >> /etc/mail.rc
echo "set smtp-auth-user=netmaster" >> /etc/mail.rc
echo "set smtp-auth-password=Longi-silicon" >> /etc/mail.rc
echo "set smtp-auth=login" >> /etc/mail.rc
#初始化监控脚本 v2.0
mkdir /home/oracle/scripts
wget http://${SITE2}/scripts/dba_disk_alert.sh -O /home/oracle/scripts/dba_disk_alert.sh
wget http://${SITE2}/scripts/dba_tbs_alert.sh -O /home/oracle/scripts/dba_tbs_alert.sh
chown -R oracle:oinstall /home/oracle/scripts
chmod 755 /home/oracle/scripts/*.sh
#设置定时任务 v2.0
echo "0 4,8,12,16,20 * * * /home/oracle/scripts/dba_disk_alert.sh > /home/oracle/scripts/dba_disk_alert.log 2>&1" > /var/spool/cron/oracle
echo "30 4,8,12,16,20 * * * /home/oracle/scripts/dba_tbs_alert.sh > /home/oracle/scripts/dba_tbs_alert.log 2>&1" >> /var/spool/cron/oracle
chown oracle:oinstall /var/spool/cron/oracle
echo "crontab is created ----- SUCCEEDED" >> install.log
#Database infomation
cat > DB_Inf.txt<<EOF
OS Infomation:
$hostip $host_name
OS User name&passwd:
oracle / $ORAPASSWD
Database Infomation:
ORACLE_SID = $ORACLE_SID
Database version : $DB_VERSION
TNS:
**********************************************
${ORACLE_SID}_TNS =
(DESCRIPTION=
(ADDRESS_LIST=
(LOAD_BALANCE=YES)
(FAILOVER=YES)
(ADDRESS=(PROTOCOL=tcp)(HOST=$hostip)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=$ORACLE_SID)
)
)
**********************************************
DB User name&passwd: system / $SYSTEM_PASSWD
DB NLS LANG:
AMERICAN_AMERICA.${NLS_LANG}
EOF
echo "#################################"
cat DB_Inf.txt
echo "#################################"
#这里可以配置mail,然后将DB_Inf邮件通知
}
#-------------------------#
# judge what needs to be done
#-------------------------#
if [[ $INPUT_CHOICE = "createDB" ]];then
echo -e "\033[37;31;5mbegin install software...\033[39;49;0m"
installDBsoftware
echo -e "\033[37;31;5mbegin create database...\033[39;49;0m"
createDB
echo -e "\033[37;31;5mbegin config database...\033[39;49;0m"
endConfig
elif [[ $INPUT_CHOICE = "installSoftwareOnly" ]];then
echo -e "\033[37;31;5mbegin install software...\033[39;49;0m"
installDBsoftware
fi