Oracle 11g/12c/19c单机自动安装脚本

#!/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="(&quot;{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl&quot;, &quot;{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control02.ctl&quot;)"/>
         <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="(&quot;{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl&quot;, &quot;{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control02.ctl&quot;)"/>
         <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="(&quot;{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl&quot;, &quot;{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control02.ctl&quot;)"/>
         <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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值