脚本为3个: 1 为基础设置脚本。--PreRACConfiguatiion.sh 2 为grid安装脚本。 --SilentInstallGrid19CRAC.sh 3 为rdbms和instance安装脚本。 --SilentInstall19CRACRdbmsAndInstance.sh注意: 1 基础设置脚本可以重复执行 2 grid和db安装脚本,在没有执行安装前停止都可以重复执行。 3 脚本只在rhel 7.6上测试,其他系统和版本不保证。 一 执行基础设置脚本前,要保证下面的问题完成: 1 挂载ISO镜像。 2 把不存在ISO镜像的RPM放到脚本相同目录,我习惯放/u01。 3 设置好主机名。
二 执行grid安装脚本前: 1 完成所有节点的/etc/hosts文件内容补充。 2 根据基础设置脚本的提示完成ssh配置。 3 绑定磁盘阵列的LUN,或使用asmlib完成配置。 4 19c的grid安装包放入grid家目录 三 执行rdbms和instance脚本前: 1 19c的db安装包放入oracle家目录 2 创建asm磁盘组 脚本下载地址: https://github.com/raysuen/SilentInstallRac19C PreRACConfiguatiion.sh:
#!/bin/bash
#by raysueen
#v1.0
#################################################################################
#执行脚本前:
# 1. 把脚本放入基础目录,例如:/u01
# 2. 挂载ISO
# 3. 把需要本地安装的rpm上传到基础目录
# 4. 设置好主机名
#执行脚本后:
# 1. 手动绑定磁盘,或安装asmlib并创建disk
# 2. 在hosts文件内把VIP和scan的IP修改正确,并其他节点信息添加进去
# 3. 通过提示把ssh互信完成。
#################################################################################
DefaultUserPWD="Cn00c36663" #set a password for grid and oracle
####################################################################################
#install rpm that oracle is necessary for installing
####################################################################################
InstallRPM(){
mountPatch=`mount | egrep "iso|ISO" | awk '{print $3}'`
if [ ! ${mountPatch} ];then
echo "The ISO file is not mounted on system."
exit 99
else
[ -f /etc/yum.repos.d/local.repo ] && sed -i '/^#OraConfBegin/,/^#OraConfEnd/d' /etc/yum.repos.d/local.repo
echo "#OraConfBegin" >> /etc/yum.repos.d/local.repo
echo "[server]" >> /etc/yum.repos.d/local.repo
echo "name=server" >> /etc/yum.repos.d/local.repo
echo "baseurl=file://"${mountPatch} >> /etc/yum.repos.d/local.repo
echo "enabled=1" >> /etc/yum.repos.d/local.repo
echo "gpgcheck=1" >> /etc/yum.repos.d/local.repo
rpm --import ${mountPatch}/RPM-GPG-KEY-redhat-release
fi
yum -y install unzip bc gcc gcc-c++ binutils make gdb cmake glibc ksh elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc-devel libaio libaio-devel libXrender libXrender-devel libX11 libXau sysstat libXi libXtst libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb net-tools nfs-utils compat-libcap1 compat-libstdc++ smartmontools targetcli python python-configshell python-rtslib python-six unixODBC unixODBC-devel
ls -l compat* elfutils* | awk -v rpmpackage="" '{rpmpackage=$NF" "rpmpackage}END{print "yum -y localinstall "rpmpackage}' | bash
while true
do
if [ `rpm -q bc gcc gcc-c++ binutils make gdb cmake glibc ksh elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc-devel libaio libaio-devel libXrender libXrender-devel libX11 libXau sysstat libXi libXtst libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb net-tools nfs-utils compat-libcap1 smartmontools targetcli python python-configshell python-rtslib python-six unixODBC unixODBC-devel --qf '%{name}.%{arch}\n'| grep "not installed" | wc -l` -gt 0 ];then
rpm -q bc gcc gcc-c++ binutils make gdb cmake glibc ksh elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc-devel libaio libaio-devel libXrender libXrender-devel libX11 libXau sysstat libXi libXtst libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb net-tools nfs-utils compat-libcap1 smartmontools targetcli python python-configshell python-rtslib python-six unixODBC unixODBC-devel --qf '%{name}.%{arch}\n'| grep "not installed"
read -p "`echo -e "Please confirm that all rpm package have installed.[${c_yellow}yes/no${c_end}] default yes:"`" ans
if [ "${ans:-yes}" == "yes" ];then
break
else
continue
fi
else
break
fi
done
}
####################################################################################
# create user and groups
####################################################################################
CreateUsersAndDirs(){
####################################################################################
# create user and groups
####################################################################################
if [ `egrep "oinstall" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11001 oinstall
fi
if [ `egrep "dba" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11002 dba
fi
if [ `egrep "oper" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11003 oper
fi
if [ `egrep "backupdba" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11004 backupdba
fi
if [ `egrep "dgdba" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11005 dgdba
fi
if [ `egrep "kmdba" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11006 kmdba
fi
if [ `egrep "asmdba" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11007 asmdba
fi
if [ `egrep "asmoper" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11008 asmoper
fi
if [ `egrep "asmadmin" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11009 asmadmin
fi
if [ `egrep "racdba" /etc/group | wc -l` -eq 0 ];then
groupadd -g 11010 racdba
fi
if [ `egrep "grid" /etc/passwd | wc -l` -eq 0 ];then
useradd -u 11012 -g oinstall -G asmadmin,asmdba,asmoper,dba grid
if [ $? -ne 0 ];then
echo "Command failed to adding user --grid."
exit 93
fi
else
usermod -g oinstall -G asmadmin,asmdba,asmoper,dba grid
fi
if [ `egrep "oracle" /etc/passwd | wc -l` -eq 0 ];then
useradd -u 11011 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
if [ $? -ne 0 ];then
echo "Command failed to adding user --oracle."
exit 93
fi
else
usermod -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
fi
echo "${DefaultUserPWD}" | passwd --stdin grid
if [ $? -ne 0 ];then
echo "Grid is not existing."
exit 92
fi
echo "${DefaultUserPWD}" | passwd --stdin oracle
if [ $? -ne 0 ];then
echo "Oracle is not existing."
exit 92
fi
####################################################################################
#make directory
####################################################################################
[ ! -d /u01/app/19.0.0/grid ] && mkdir -p /u01/app/19.0.0/grid
[ ! -d /u01/app/grid ] && mkdir -p /u01/app/grid
[ ! -d /u01/app/oracle ] && mkdir -p /u01/app/oracle
[ ! -d /u01/app/oracle/product/19.0.0/db_1 ] && mkdir -p /u01/app/oracle/product/19.0.0/db_1
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/19.0.0
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
}
####################################################################################
#Time dependent Settings
####################################################################################
TimeDepSet(){
timedatectl set-timezone Asia/Shanghai
systemctl stop ntpd.service
systemctl disable ntpd.service
[ -f /etc/ntp.conf ] && mv /etc/ntp.conf /etc/ntp.conf.orig
systemctl stop chronyd.service
systemctl disable chronyd.service
}
####################################################################################
#Time dependent Settings
####################################################################################
Stopavahi(){
systemctl stop avahi-daemon.socket
systemctl disable avahi-daemon.socket
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
ps -ef|grep avahi-daemon | egrep -v "grep" | awk '{print "kill -9 "$2}'
}
####################################################################################
#stop firefall and disable selinux
####################################################################################
StopFirewallAndDisableSelinux(){
systemctl stop firewalld
systemctl disable firewalld
if [ "`/usr/sbin/getenforce`" != "Disabled" ];then
/usr/sbin/setenforce 0
fi
if [ ! -z `grep "SELINUX=enforcing" /etc/selinux/config` ];then
[ ! -f /etc/selinux/config.$(date +%F) ] && cp /etc/selinux/config /etc/selinux/config.$(date +%F)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
fi
}
####################################################################################
#edit parameter
####################################################################################
EditParaFiles(){
####################################################################################
#obtain current day
####################################################################################
daytime=`date +%Y%m%d`
####################################################################################
#ban hugepage
####################################################################################
sed -i '/^#OraConfBegin/,/^#OraConfEnd/d' /etc/default/grub
echo "#OraConfBegin" >> /etc/default/grub
echo "transparent_hugepage=never" >> /etc/default/grub
echo "#OraConfEnd" >> /etc/default/grub
####################################################################################
#edit limit
####################################################################################
sed 's/* soft nproc 4096/* - nproc 16384/g' /etc/security/limits.d/20-nproc.conf
####################################################################################
#edit limits.conf
####################################################################################
sed -i '/^#OraConfBegin/,/^#OraConfEnd/d' /etc/security/limits.conf
[ ! -f /etc/security/limits.conf.${daytime} ] && cp /etc/security/limits.conf /etc/security/limits.conf.${daytime}
echo "#OraConfBegin" >> /etc/security/limits.conf
echo "grid soft nproc 2047" >> /etc/security/limits.conf
echo "grid hard nproc 16384" >> /etc/security/limits.conf
echo "grid soft nofile 1024" >> /etc/security/limits.conf
echo "grid hard nofile 65536" >> /etc/security/limits.conf
echo "grid soft stack 10240" >> /etc/security/limits.conf
echo "grid hard stack 32768" >> /etc/security/limits.conf
echo "oracle soft nproc 2047" >> /etc/security/limits.conf
echo "oracle hard nproc 16384" >> /etc/security/limits.conf
echo "oracle soft nofile 1024" >> /etc/security/limits.conf
echo "oracle hard nofile 65536" >> /etc/security/limits.conf
echo "oracle soft stack 10240" >> /etc/security/limits.conf
echo "oracle hard stack 32768" >> /etc/security/limits.conf
echo "oracle hard memlock 4194304" >> /etc/security/limits.conf
echo "oracle soft memlock 4194304" >> /etc/security/limits.conf
echo "#OraConfEnd" >> /etc/security/limits.conf
####################################################################################
#edit sysctl.conf
####################################################################################
shmall=`/sbin/sysctl -a 2>&1 | grep "shmall" | awk '{print $NF}'`
shmmax=`/sbin/sysctl -a 2>&1 | grep "shmmax" | awk '{print $NF}'`
sed -i '/^#OraConfBegin/,/^#OraConfEnd/d' /etc/sysctl.conf #delete content
[ ! -f /etc/sysctl.conf.${daytime} ] && cp /etc/sysctl.conf /etc/sysctl.conf.${daytime}
echo "#OraConfBegin" >> /etc/sysctl.conf
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.shmall = "${shmall} >> /etc/sysctl.conf
echo "kernel.shmmax = "${shmall} >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.wmem_max = 1048576" >> /etc/sysctl.conf
echo "#OraConfEnd" >> /etc/sysctl.conf
sysctl -p
####################################################################################
#edit nsysctl.conf
####################################################################################
sed -i '/^#OraConfBegin/,/^#OraConfEnd/d' /etc/sysconfig/network #delete content
[ ! -f /etc/sysconfig/network.${daytime} ] && cp /etc/sysconfig/network /etc/sysconfig/network.${daytime}
echo "#OraConfBegin" >> /etc/sysconfig/network
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
echo "#OraConfEnd" >> /etc/sysconfig/network
}
####################################################################################
#obtain base dir
####################################################################################
ObtainBasedir(){
if [ "${basedir:-None}" == "None" ];then
while true
do
read -p "`echo -e "please enter the name of base dir,put this shell and software in the dir.default [\e[1;33m/u01\e[0m]: "`" bdir
basedir=${bdir:-/u01} #this is base dir,put this shell and software in the dir
if [ ! -d ${basedir} ];then
echo -e "the ${basedir} is not exsist,please ${c_red}make it up${c_end}"
continue
else
break
fi
done
else
if [ ! -d ${basedir} ];then
echo -e "the ${basedir} is not exsist,please ${c_red}make it up${c_end}"
exit 95
fi
fi
}
####################################################################################
#edit bash_profile
####################################################################################
EditUserBashprofile(){
####################################################################################
#obtain current day
####################################################################################
daytime=`date +%Y%m%d`
####################################################################################
#obtain path
####################################################################################
gridbase="${basedir}/app/grid"
gridhome="${basedir}/app/19.0.0/grid"
orabase="${basedir}/app/oracle" #set path of oracle_base
orahome="${orabase}/product/19.0.0/db_1"
####################################################################################
#edit grid's bash
####################################################################################
while true
do
read -p "`echo -e "\e[1;33mPlease enter a number to indicate the current node。: \e[0m"`" NodeNum
[ `grep '^[[:digit:]]*$' <<< "${NodeNum}"` ] && break || echo -e "\e[1;33You must enter a number!!.\e[0m";continue
done
[ ! -f /home/grid/.bash_profile${daytime}.bak ] && su - grid -c "cp /home/grid/.bash_profile /home/grid/.bash_profile${daytime}.bak"
[ -f /home/grid/.bash_profile ] && su - grid -c "sed -i '/^#OraConfBegin/,/^#OraConfEnd/d' /home/grid/.bash_profile"
su - grid -c "echo \"#OraConfBegin\" >> /home/grid/.bash_profile"
su - grid -c "echo 'ORACLE_BASE='${gridbase} >> /home/grid/.bash_profile"
su - grid -c "echo 'ORACLE_HOME='${gridhome} >> /home/grid/.bash_profile"
su - grid -c "echo 'ORACLE_SID=+ASM'${NodeNum} >> /home/grid/.bash_profile"
su - grid -c "echo 'export ORACLE_BASE ORACLE_HOME ORACLE_SID' >> /home/grid/.bash_profile"
su - grid -c "echo 'export PATH=\$PATH:\$HOME/bin:\$ORACLE_HOME/bin' >> /home/grid/.bash_profile"
#su - grid -c "echo 'export NLS_LANG=AMERICAN_AMERICA.AL32UTF8' >> /home/grid/.bash_profile" #AL32UTF8,ZHS16GBK
su - grid -c "echo 'export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/lib' >> /home/grid/.bash_profile"
su - grid -c "echo \"#OraConfEnd\" >> /home/grid/.bash_profile"
####################################################################################
#edit oracle's bash
####################################################################################
[ ! -f /home/oracle/.bash_profile${daytime}.bak ] && su - oracle -c "cp /home/oracle/.bash_profile /home/oracle/.bash_profile${daytime}.bak"
[ -f home/oracle/.bash_profile ] && su - oracle -c "sed -i '/^#OraConfBegin/,/^#OraConfEnd/d' /home/oracle/.bash_profile"
su - oracle -c "echo \"#OraConfBegin\" >> /home/oracle/.bash_profile"
su - oracle -c "echo 'ORACLE_BASE='${orabase} >> /home/oracle/.bash_profile"
su - oracle -c "echo 'ORACLE_HOME='${orahome} >> /home/oracle/.bash_profile"
su - oracle -c "echo 'ORACLE_SID=' >> /home/oracle/.bash_profile"
su - oracle -c "echo 'export ORACLE_BASE ORACLE_HOME ORACLE_SID' >> /home/oracle/.bash_profile"
su - oracle -c "echo 'export PATH=\$PATH:\$HOME/bin:\$ORACLE_HOME/bin' >> /home/oracle/.bash_profile"
#su - oracle -c "echo 'export NLS_LANG=AMERICAN_AMERICA.AL32UTF8' >> /home/oracle/.bash_profile" #AL32UTF8,ZHS16GBK
su - oracle -c "echo 'export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/lib' >> /home/oracle/.bash_profile"
su - oracle -c "echo \"#OraConfEnd\" >> /home/oracle/.bash_profile"
}
####################################################################################
#create keygen
####################################################################################
EditHostsFile(){
####################################################################################
#list internet name
####################################################################################
echo "internet name:"
for i in `ip addr | egrep "^[0-9]" | awk -F ':' '{print $2}'`
do
IPtemp=`ifconfig $i | egrep -v "inet6" | awk -F 'net|netmaskt' '{print $2}' | sed ':label;N;s/\n//;b label' | sed -e 's/ //g' -e 's/)//g'`
printf "%10s : %-20s\n" $i ${IPtemp}
#echo -e " \e[1;33m"$i": "`ifconfig $i | egrep -v "inet6" | awk -F 'net|netmaskt' '{print $2}' | sed ':label;N;s/\n//;b label' | sed -e 's/ //g' -e 's/)//g'`"\e[0m"
done
####################################################################################
#get public internet
####################################################################################
while true
do
read -p "`echo -e "\e[1;33mPlease enter internet name for public : \e[0m"`" PublicName
[ `ip addr | egrep "^[0-9]" | awk -F ':' '{print $2}' | egrep "${PublicName}"` ] && break || echo "Please enter a right internet name!!";continue
done
####################################################################################
#get private internet
####################################################################################
while true
do
read -p "`echo -e "\e[1;33mPlease enter internet name for private : \e[0m"`" PrivateName
[ `ip addr | egrep "^[0-9]" | awk -F ':' '{print $2}' | egrep "${PrivateName}"` ] && break || echo "Please enter a right internet name!!";continue
done
HName=`/bin/hostname`
#ip add | grep ens192 | grep inet | awk '{print $2}' | awk -F"/" '{printf "%-20s'${HName}'\n",$1}'
sed -i '/^#OraConfBegin/,/^#OraConfEnd/d' /etc/hosts
echo "" >> /etc/hosts
echo "#OraConfBegin" >> /etc/hosts
echo "#public ip" >> /etc/hosts
ip add | grep ${PublicName} | grep inet | awk '{print $2}' | awk -F"/" '{printf "%-20s'${HName}'\n",$1}' >> /etc/hosts
echo "" >> /etc/hosts
echo "" >> /etc/hosts
echo "#private ip" >> /etc/hosts
ip add | grep ${PrivateName} | grep inet | awk '{print $2}' | awk -F"/" '{printf "%-20s'${HName}'-priv\n",$1}' >> /etc/hosts
echo "" >> /etc/hosts
echo "" >> /etc/hosts
echo "#Vip" >> /etc/hosts
ip add | grep ${PublicName} | grep inet | awk '{print $2}' | awk -F"[./]" '{printf "%-20s'${HName}'-vip\n",$1"."$2"."$3"."}' >> /etc/hosts
echo "" >> /etc/hosts
echo "" >> /etc/hosts
echo "#scan ip" >> /etc/hosts
ip add | grep ${PublicName} | grep inet | awk '{print $2}' | awk -F"[./]" '{printf "%-20sracscan\n",$1"."$2"."$3"."}' >> /etc/hosts
echo "" >> /etc/hosts
echo "#OraConfEnd" >> /etc/hosts
}
####################################################################################
#create keygen
####################################################################################
CreateKeygen(){
su - grid -c "rm -rf ~/.ssh"
su - grid -c "echo -e \"\\n\\n\\n\\n\" | ssh-keygen -t rsa"
su - grid -c "echo -e \"\\n\\n\\n\\n\" | ssh-keygen -t dsa"
su - grid -c "cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys"
su - grid -c "cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys"
su - oracle -c "rm -rf ~/.ssh"
su - oracle -c "echo -e \"\\n\\n\\n\\n\" | ssh-keygen -t rsa"
su - oracle -c "echo -e \"\\n\\n\\n\\n\" | ssh-keygen -t dsa"
su - oracle -c "cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys"
su - oracle -c "cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys"
echo -e "\e[1;33mIf this is first node in RAC,you can exec following command as grid and oracle,not ignore following.\e[0m"
echo -e "\e[1;33m ssh OtherNode cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys\e[0m"
echo -e "\e[1;33m ssh OtherNode cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys\e[0m"
echo -e "\e[1;33m scp ~/.ssh/authorized_keys OtherNode:~/.ssh/authorized_keys\e[0m"
}
####################################################################################
#run function
####################################################################################
RunFunction(){
InstallRPM
CreateUsersAndDirs
TimeDepSet
Stopavahi
StopFirewallAndDisableSelinux
EditParaFiles
ObtainBasedir
EditUserBashprofile
EditHostsFile
CreateKeygen
}
####################################################################################
#entrance of the script
####################################################################################
RunFunction
SilentInstallGrid19CRAC.sh:
#!/bin/bash
#by raysuen
#v01
#################################################################################
#执行脚本前:
# 1. 确认是否绑定磁盘,或使用asmlib创建磁盘。
# 2. 在/etc/hosts文件内的IP信息是否准确。
# 3. 确认ssh互信完成。
#
#
#################################################################################
. ~/.bash_profile
####################################################################################
#unzip Grid
####################################################################################
UnzipPRMAndCheck(){
echo "${ORACLE_HOME}" | awk -F"/" '{if($NF=="") {print "rm -rf "$0"*"} else {print "rm -rf "$0"/*"}}' | bash
if [ -f ~/LINUX.X64_193000_grid_home.zip ];then
unzip ~/LINUX.X64_193000_grid_home.zip -d ${ORACLE_HOME}
[ $? -ne 0 ] && exit 98
echo -e "\e[1;33mExecute the following command as root on current node: \e[0m"
if [ -d ${ORACLE_HOME}/cv/rpm ];then
CvRpmName=`ls ${ORACLE_HOME}/cv/rpm`
echo ${CvRpmName} | awk '{print " rpm -ivh '${ORACLE_HOME}'/cv/rpm/"$0}'
fi
HostnameArray=$(sed -n '/^#public ip/,/^#private ip/p' /etc/hosts | egrep "^[[:digit:]]" | awk '{if($2!=cmd) print $2}' cmd=`hostname`)
for var in ${HostnameArray[@]}
do
scp ${ORACLE_HOME}/cv/rpm/${CvRpmName} $var:/tmp
done
echo -e "\e[1;33mExecute the following command as root on remode node: \e[0m"
echo -e "\e[1;33m rpm -ivh /tmp/${CvRpmName}\e[0m"
while true
do
read -p "`echo -e "Have you finished installing the cv rpm,yes/no.default \e[1;33myes\e[0m: "`" RpmConfirm
if [ "${RpmConfirm:=yes}" == "yes" ];then
break
elif [ "${RpmConfirm:=yes}" == "no" ];then
continue
else
echo "You only enter value yes or no."
continue
fi
done
while true
do
echo -e "\n\n\n\n" | ${ORACLE_HOME}/runcluvfy.sh stage -pre crsinst -n `sed -n '/^#public ip/,/^#private ip/p' /etc/hosts | egrep "^[[:digit:]]" | awk '{printf $2","}' | awk '{print substr($0,1,length($0)-1)}'` -fixup -verbose > ~/gridcheck.txt
echo -e "\e[1;33mPlease check the ~/gridcheck.txt to sure that everything is ok before installing grid.\e[0m: "
read -p "`echo -e "\e[1;33mHave you checked the file and then go on installing grid,yes/no.\e[0m: "`" CheckFileConfirm
if [ ${CheckFileConfirm:-null} == "null" ];then
echo "You only enter the value, yes or no."
continue
elif [ ${CheckFileConfirm:-null} == "yes" ];then
break
elif [ ${CheckFileConfirm:-null} == "no" ];then
continue
else
echo "You only enter the value, yes or no."
continue
fi
done
else
echo "The Grid zip not find in grid home."
exit 99
fi
}
####################################################################################
#create grid rsp file
####################################################################################
CreateGirdRspFile(){
####################################################################################
#get scanname
####################################################################################
if [ ! ${scanname} ];then
while true
do
read -p "`echo -e "please enter the name for scanName.default \e[1;33mracscan\e[0m: "`" scanname #get scanname
echo -e "Your scanNmae is \e[1;33m" ${scanname:=racscan}"\e[0m."
read -p "`echo -e "please confirm the scanNmae -\e[1;33m${scanname}\e[0m-, yes/no,default \e[1;33myes\e[0m: "`" scanConfirm #confirm scanmae
if [ ${scanConfirm:=yes} == "yes" ];then
break
elif [ ${scanConfirm:=yes} == "no" ];then
continue
else
echo "Please enter yes or no."
continue
fi
done
fi
####################################################################################
#get cluster name
####################################################################################
if [ ! ${clustername} ];then
while true
do
read -p "`echo -e "please enter the name for clusterName.default \e[1;33mserver-cluster\e[0m: "`" clustername #get cluster name
echo -e "Your scanNmae is \e[1;33m" ${clustername:=server-cluster}"\e[0m."
read -p "`echo -e "please confirm the clusterName \e[1;33m${clustername}\e[0m , yes/no,default \e[1;33myes\e[0m: "`" clusterConfirm #onfirm cluster name
if [ ${clusterConfirm:=yes} == "yes" ];then
break
elif [ ${clusterConfirm:=yes} == "no" ];then
continue
else
echo "Please enter yes or no."
continue
fi
done
fi
####################################################################################
#get hostname and hostname-vip
####################################################################################
if [ ! ${hostnames} ];then
exhostnames="`hostname`:`hostname`-vip"
while true
do
echo "please enter the whole nodes's hostname.And you use commas to separated the multiple groups of names。"
read -p "`echo -e "Example: \e[1;33 ${exhostnames} \e[0m: "`" hostnames
if [ ${hostnames} ];then
echo -e "Your hostnames are \e[1;33m " ${hostnames} " \e[0m."
else
echo "\e[1;33The hostnames can be empty!!\e[0m"
continue
fi
read -p "`echo -e "please confirm the hostnames \e[1;33m${hostnames}\e[0m , yes/no,default \e[1;33myes\e[0m: "`" hostConfirm
if [ ${hostConfirm:=yes} == "yes" ];then
break
elif [ ${hostConfirm:=yes} == "no" ];then
continue
else
echo "Please enter yes or no."
continue
fi
done
fi
####################################################################################
#get IP Management style
####################################################################################
while true
do
echo ""
echo "Enter a number for the specified interface to bind to how the network card is managed."
echo "InterfaceType stand for the following values"
echo -e "\e[1;33m - 1 : PUBLIC\e[0m"
echo -e "\e[1;33m - 2 : PRIVATE\e[0m"
echo -e "\e[1;33m - 3 : DO NOT USE\e[0m"
echo -e "\e[1;33m - 4 : ASM\e[0m"
echo -e "\e[1;33m - 5 : ASM & PRIVATE\e[0m"
unset NetworkMS #clear variable NetworkMS
for i in `ip addr | egrep "^[2-9]" | awk -F ':' '{print $2}'` #circuate the interface name
do
IPTemp=`/usr/sbin/ifconfig $i | egrep "broadcast|netmaskt" | awk '{print $2}' | sed ':label;N;s/\n//;b label' | sed -e 's/ //g' -e 's/)//g'` #get IP of the interface
BroadTemp=`/usr/sbin/ifconfig $i | egrep "broadcast|netmaskt" | awk '{print $4}' | sed ':label;N;s/\n//;b label' | sed -e 's/ //g' -e 's/)//g'` ##get broadcast of the interface
[ ${BroadTemp} ] || break #if the broadcast is null then break
NetworkTemp=$(ipcalc -n ${IPTemp} ${BroadTemp} | awk -F"=" '{print $2}') #get network order ot ip and broadcast
#get interface:network:networkManagement
while true
do
NetworkMSTemp=""
printf "%10s : %-20s: " $i ${NetworkTemp} #show the interface:network
read -p "" NetworkMSTemp #get networkManagement
#Determine if the input is a number
if [[ `grep '^[[:digit:]]*$' <<< "${NetworkMSTemp}"` ]] && [[ ${NetworkMSTemp} -le 5 ]];then
break
else
echo "You must enter a number and the number less than 5!"
continue
fi
done
#get the whole interface:network:networkManagement
[ ${NetworkMS} ] && NetworkMS=`echo ${NetworkMS}","$i":"${NetworkTemp}":"${NetworkMSTemp}` || NetworkMS=`echo $i":"${NetworkTemp}":"${NetworkMSTemp}`
done
echo ""
echo "Your interface management list:"
NetworkMSArray=(${NetworkMS//,/ })
for var in ${NetworkMSArray[@]}
do
echo ${var} | awk -F":" '{if($3==1) {printf " "$1":"$2":PUBLIC\n"} else if($3==2){printf " "$1":"$2":PRIVATE\n"}else if($3==3){printf " "$1":"$2":DO NOT USE\n"}else if($3==4){printf " "$1":"$2":ASM\n"}else if($3==5){printf " "$1":"$2":ASM & PRIVATE\n"}}'
done
#confirm the interfaces management
while true
do
read -p "`echo -e "please confirm the interface management, yes/no,default \e[1;33myes\e[0m: "`" interfaceConfirm
if [ ${interfaceConfirm:=yes} == "yes" ];then
break
elif [ ${interfaceConfirm:=yes} == "no" ];then
break
else
echo "You must yes or no."
continue
fi
done
[ ${interfaceConfirm} == "yes" ] && break || continue
done
####################################################################################
#get diskgroup name,redundancy,path
####################################################################################
#disk discovery path
while true
do
echo ""
echo "Default disks discovery path is /dev/sd*.Do you wang to change?"
read -p "`echo -e "yes/no,Default \e[1;33mno\e[0m: "`" DefDiskPathConfirm
if [ "${DefDiskPathConfirm:=no}" == "yes" ];then
read -p "`echo -e "Please enter the new disks path : "`" DiskPath
if [ `ls -lh ${DiskPath:=""} 2>/dev/null | awk '/grid asmadmin/{print $0}' | wc -l ` -ge 1 ];then
echo ""
echo -e "\e[1;33mAvaliable disk list:\e[0m"
ls -lh ${DiskPath:=""} 2>/dev/null | awk '/grid asmadmin/{print " "$NF}'
#ls -lh ${DiskPath:=""} 2>/dev/null | awk '/grid asmadmin/{print '${DiskPath}'$0}'
break
#else
# echo "You must enter a exists path!"
# continue
fi
elif [ "${DefDiskPathConfirm:=no}" == "no" ];then
DiskPath='/dev/sd*'
echo ""
echo -e "\e[1;33mAvaliable disk list:\e[0m"
ls -lh ${DiskPath:='/dev/sd*'} 2>/dev/null | awk '/grid asmadmin/{print " "$NF}'
break
else
echo "You only enter yes or no,please enter right value."
continue
fi
done
#diskgroup name
while true
do
echo ""
echo -e "\e[1;33mOCR and Voting disk data will be stored in the following ASM Disk group.\e[0m"
read -p "`echo -e "Disk group name.Default\e[1;33m OCR01 \e[0m: "`" ASMdgn
read -p "`echo -e "Disk group redundancy,EXTERNAL/NORMAL/HIGH.Default \e[1;33m EXTERNAL \e[0m: "`" ASMRedundancy
read -p "`echo -e "Enter disks for disk group.Multiple paths are separated by commas.: "`" ASMdisks
if [ ! ${ASMdisks} ];then
echo "The disks can not be empty!!"
continue
fi
if [[ ${ASMRedundancy:="EXTERNAL"} == "NORMAL" ]] || [[ ${ASMRedundancy:="EXTERNAL"} == "HIGH" ]];then
ASMDiskArray=(${ASMdisks//,/ })
for var in ${ASMDiskArray[@]}
do
while true
do
read -p "`echo -e "Enter Failuregroup for ${var}: "`" ASMFGTmp
if [ ${ASMFGTmp} ];then
#ASMFGs=${ASMFGs}${ASMFGTmp}","
#ASMFGsWithDisks=${ASMFGsWithDisks}","${var}","${ASMFGTmp}
if [ ! ${ASMFGs} ];then
ASMFGs=${ASMFGTmp}","
ASMFGsWithDisks=${var}","${ASMFGTmp}
else
ASMFGs=${ASMFGs}${ASMFGTmp}","
ASMFGsWithDisks=${ASMFGsWithDisks}","${var}","${ASMFGTmp}
fi
break
else
echo "The ASM failuregroup can be empty!"
continue
fi
unset ASMFGTmp
done
done
else
ASMFGsWithDisks=`echo ${ASMdisks} | awk -F',' '{for(i=1;i<=NF;i++){if(i!=NF){printf $i",,"}else{print $i","}}}'`
fi
echo ""
echo -e "\e[1;33mDisk group name is \e[1;33m${ASMdgn:=OCR01}.\e[0m"
echo -e "\e[1;33mDisk group redundancy is \e[1;33m${ASMRedundancy}.\e[0m"
echo -e "\e[1;33mThe disks of diskgroup are \e[1;33m${ASMdisks}.\e[0m"
if [ ${ASMFGs} ];then
echo -e "\e[1;33mThe disks with failuregroup are :\e[0m"
echo ${ASMFGsWithDisks} | awk -F',' '{for(i=1;i<=NF;i++){{if(i%2==0) {printf $i"\n"} else {printf " "$i":"}}}}'
fi
while true
do
read -p "`echo -e "Do you want to change the diskgroup infomations,yes/no.default \e[1;33mno\e[0m: "`" ASMConfirm
if [ "${ASMConfirm:=no}" == "yes" ];then
break
elif [ "${ASMConfirm:=no}" == "no" ];then
break
else
echo "You must enter yes or no."
continue
fi
done
[ "${ASMConfirm:=no}" == "yes" ] && continue || break
done
}
####################################################################################
#install grid function
####################################################################################
InstallGrid(){
#${ORACLE_HOME}/gridSetup.sh -silent -ignorePrereqFailure -responseFile ~/grid.rsp -waitForCompletion
if [ ${ASMFGs} ];then
GridInstallString="INVENTORY_LOCATION=/u01/app/grid/oraInventory
SELECTED_LANGUAGES=en,en_GB
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSASM=asmadmin
oracle.install.asm.OSOPER=asmoper
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.gpnp.scanName=${scanname}
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.clusterName=${clustername}
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.clusterNodes=${hostnames}
oracle.install.crs.config.networkInterfaceList=${NetworkMS}
oracle.install.asm.configureGIMRDataDG=false
oracle.install.crs.config.useIPMI=false
oracle.install.asm.storageOption=FLEX_ASM_STORAGE
oracle.install.asmOnNAS.configureGIMRDataDG=false
oracle.install.asm.SYSASMPassword=oracle
oracle.install.asm.diskGroup.name=${ASMdgn}
oracle.install.asm.diskGroup.redundancy=${ASMRedundancy}
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.FailureGroups=${ASMFGs}
oracle.install.asm.diskGroup.disksWithFailureGroupNames=${ASMFGsWithDisks}
oracle.install.asm.diskGroup.disks=${ASMdisks}
oracle.install.asm.diskGroup.diskDiscoveryString=${DiskPath}
oracle.install.asm.configureAFD=false
oracle.install.asm.monitorPassword=oracle
oracle.install.crs.configureRHPS=false
oracle.install.crs.config.ignoreDownNodes=false
oracle.install.config.managementOption=NONE
oracle.install.config.omsPort=0
oracle.install.crs.rootconfig.executeRootScript=false"
else
GridInstallString="INVENTORY_LOCATION=/u01/app/grid/oraInventory
SELECTED_LANGUAGES=en,en_GB
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSASM=asmadmin
oracle.install.asm.OSOPER=asmoper
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.gpnp.scanName=${scanname}
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.clusterName=${clustername}
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.clusterNodes=${hostnames}
oracle.install.crs.config.networkInterfaceList=${NetworkMS}
oracle.install.asm.configureGIMRDataDG=false
oracle.install.crs.config.useIPMI=false
oracle.install.asm.storageOption=FLEX_ASM_STORAGE
oracle.install.asmOnNAS.configureGIMRDataDG=false
oracle.install.asm.SYSASMPassword=oracle
oracle.install.asm.diskGroup.name=${ASMdgn}
oracle.install.asm.diskGroup.redundancy=${ASMRedundancy}
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.disksWithFailureGroupNames=${ASMFGsWithDisks}
oracle.install.asm.diskGroup.disks=${ASMdisks}
oracle.install.asm.diskGroup.diskDiscoveryString=${DiskPath}
oracle.install.asm.configureAFD=false
oracle.install.asm.monitorPassword=oracle
oracle.install.crs.configureRHPS=false
oracle.install.crs.config.ignoreDownNodes=false
oracle.install.config.managementOption=NONE
oracle.install.config.omsPort=0
oracle.install.crs.rootconfig.executeRootScript=false"
fi
#echo ${GridInstallString}
####################################################################################
#install grid
####################################################################################
#echo "${ORACLE_HOME}/gridSetup.sh -ignorePrereq -waitforcompletion -silent -responseFile ${ORACLE_HOME}/install/response/gridsetup.rsp ${GridInstallString}"
${ORACLE_HOME}/gridSetup.sh -ignorePrereq -waitforcompletion -silent -responseFile ${ORACLE_HOME}/install/response/gridsetup.rsp ${GridInstallString}
echo -e "\e[1;31mAttention: You need not to execute configuration script.\e[0m"
while true
do
read -p "`echo -e "Have you finished executing the script?yes/no: "`" ExecScriptCon
if [ "${ExecScriptCon}" == "yes" ];then
${ORACLE_HOME}/gridSetup.sh -silent -executeConfigTools -waitforcompletion -responseFile ${ORACLE_HOME}/install/response/gridsetup.rsp ${GridInstallString}
break
elif [ "${ExecScriptCon}" == "no" ];then
continue
else
echo "You must enter yes or no!"
continue
fi
done
}
####################################################################################
#entrance of script
####################################################################################
CreateGirdRspFile
UnzipPRMAndCheck
InstallGrid
SilentInstall19CRACRdbmsAndInstance.sh:
#!/bin/bash
#by raysuen
#v01
#################################################################################
#执行脚本前:
# 1. 创建实例前确认存储数据的磁盘组存在
# 2. 安装包放在oracle家目录内
#
#################################################################################
. ~/.bash_profile
####################################################################################
#unzip oracle rdbms software and install rdbms
####################################################################################
UnzipAndInstallRdbms(){
echo "${ORACLE_HOME}" | awk -F"/" '{if($NF=="") {print "rm -rf "$0"*"} else {print "rm -rf "$0"/*"}}' | bash
if [ -f ~/LINUX.X64_193000_db_home.zip ];then
unzip ~/LINUX.X64_193000_db_home.zip -d ${ORACLE_HOME}
[ $? -ne 0 ] && exit 98
else
echo "The DB zip not find in oracle home."
exit 99
fi
NodeList=`sed -n '/^#public ip/,/^#private ip/p' /etc/hosts | egrep "^[[:digit:]]" | awk '{printf $2","}' | awk '{print substr($0,1,length($0)-1)}'`
${ORACLE_HOME}/runInstaller -ignorePrereq -waitforcompletion -silent \
-responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=${ORACLE_BASE}/oraInventory \
SELECTED_LANGUAGES=en,en_GB \
ORACLE_HOME=${ORACLE_HOME} \
ORACLE_BASE=${ORACLE_BASE} \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSOPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=backupdba \
oracle.install.db.OSDGDBA_GROUP=dgdba \
oracle.install.db.OSKMDBA_GROUP=kmdba \
oracle.install.db.OSRACDBA_GROUP=racdba \
oracle.install.db.rootconfig.executeRootScript=false \
oracle.install.db.CLUSTER_NODES=${NodeList} \
oracle.install.db.ConfigureAsContainerDB=false \
oracle.install.db.config.starterdb.memoryOption=false \
oracle.install.db.config.starterdb.installExampleSchemas=false \
oracle.install.db.config.starterdb.managementOption=DEFAULT \
oracle.install.db.config.starterdb.omsPort=0 \
oracle.install.db.config.starterdb.enableRecovery=false
}
####################################################################################
#install instance
####################################################################################
InstallInstance(){
#NodeList=`sed -n '/^#public ip/,/^#private ip/p' /etc/hosts | egrep "^[[:digit:]]" | awk '{printf $2","}' | awk '{print substr($0,1,length($0)-1)}'`
while true
do
read -p "`echo -e "Do you go on to install instance,\e[1;33m yes/no \e[0m : "`" InstanceConfirm
if [ "${InstanceConfirm}" == "yes" ];then
break
elif [ "${InstanceConfirm}" == "no" ];then
exit 0
else
echo "You only enter yes or no."
continue
fi
done
while true
do
####################################################################################
#get SID prefix
####################################################################################
read -p "`echo -e "please enter the sid and db name prefix.default \e[1;33m orcl \e[0m: "`" osid
[ ${osid} ] || osid="orcl"
####################################################################################
#get characterSet
####################################################################################
while true
do
echo "please enter the characterSet for your instance."
echo "(1) ZHS16GBK"
echo "(2) AL32UTF8"
read -p "`echo -e ".Please enter 1 or 2 to choose character: "`" Inchar
if [ ! ${Inchar} ];then
echo "You must enter 1 or 2 to choose the character."
continue
elif [ ${Inchar} -eq 1 ];then
InCharacter=ZHS16GBK #this is character of instance.
break
elif [ ${Inchar} -eq 2 ];then
InCharacter=AL32UTF8 #this is character of instance.
break
else
echo "You must enter 1 or 2 to choose the character."
continue
fi
done
####################################################################################
#get diskgroup for datafile location
####################################################################################
while true
do
read -p "`echo -e ".Please specify a diskgroup for datafile location: "`" DiskGroupName
[ ${DiskGroupName} ]&& break || continue
done
####################################################################################
#get SGA PGA
####################################################################################
while true
do
read -p "`echo -e ".Please specify SGA size,default MB,you also use G. : "`" SGASize
if [ ! ${SGASize} ];then
echo "You must specify a value for sga."
continue
fi
if [ ! `echo ${SGASize} | sed 's/[[:digit:]]//g'` ];then
SGASize=${SGASize}"MB"
break
elif [ `echo ${SGASize} | sed 's/[[:digit:]]//g'` == "G" ];then
break
elif [ `echo ${SGASize} | sed 's/[[:digit:]]//g'` == "M" ];then
break
else
echo "You must specify right a value for sga."
echo "Example: 4096 or 4096M or 4G"
echo ""
continue
fi
done
while true
do
read -p "`echo -e "Please specify PGA size,default MB,you also use G. : "`" PGASize
if [ ! ${PGASize} ];then
echo "You must specify a value for pga."
continue
fi
if [ ! `echo ${PGASize} | sed 's/[[:digit:]]//g'` ];then
PGASize=${PGASize}"MB"
break
elif [ `echo ${PGASize} | sed 's/[[:digit:]]//g'` == "G" ];then
break
elif [ `echo ${PGASize} | sed 's/[[:digit:]]//g'` == "M" ];then
break
else
echo "You must specify right a value for sga."
echo "Example: 4096 or 4096M or 4G"
echo ""
continue
fi
done
####################################################################################
#get container
####################################################################################
while true
do
read -p "`echo -e "Do you create container database? yes/no. Default \e[1;33m no \e[0m: "`" ContainerConfirm
if [ ${ContainerConfirm:-no} == "no" ];then
break
elif [ ${ContainerConfirm:-no} == "yes" ];then
read -p "`echo -e "PDB name: "`" PDBName
if [ ! ${PDBName} ];then
echo "PDB name must be not empty!"
continue
else
break
fi
else
echo "You only enter yes or no."
continue
fi
done
####################################################################################
#confirm all infomation
####################################################################################
echo ""
echo -e "\e[1;31mYour instance name is ${osid} \e[0m"
echo -e "\e[1;31mYour instance characterset is ${InCharacter} \e[0m"
echo -e "\e[1;31mYour instance datafile location is ${DiskGroupName} \e[0m"
echo -e "\e[1;31mYour instance SGA is ${SGASize} \e[0m"
echo -e "\e[1;31mYour instance PGA is ${PGASize} \e[0m"
if [ "${ContainerConfirm}" == "yes" ];then
echo -e "\e[1;31mYour instance PDB name is ${PDBName} \e[0m"
fi
echo ""
while true
do
read -p "`echo -e "Please confirm instance information. yes/no. Default \e[1;33m yes \e[0m: "`" InfoConfirm
if [ "${InfoConfirm:-yes}" == "yes" ];then
break
elif [ "${InfoConfirm:-yes}" == "no" ];then
break
else
echo "You only enter yes or no."
continue
fi
done
if [ "${InfoConfirm:-yes}" == "yes" ];then
break
else
continue
fi
done
####################################################################################
#install instance
####################################################################################
if [ ${ContainerConfirm:-no} == "no" ];then
dbca -silent -ignorePreReqs -createDatabase \
-templateName General_Purpose.dbc \
-databaseConfigType RAC \
-gdbName ${osid} \
-sid ${osid} \
-sysPassword oracle \
-systemPassword oracle \
-dbsnmpPassword oracle \
-characterSet ${InCharacter} \
-nationalCharacterSet AL16UTF16 \
-storageType ASM \
-diskGroupName +${DiskGroupName} \
-nodelist ${NodeList} \
-asmSysPassword oracle \
-initParams processes=1500,pga_aggregate_target=${PGASize},sga_target=${SGASize}
else
dbca -silent -ignorePreReqs -createDatabase \
-templateName General_Purpose.dbc \
-databaseConfigType RAC \
-gdbName ${osid} \
-sid ${osid} \
-sysPassword oracle \
-systemPassword oracle \
-dbsnmpPassword oracle \
-characterSet ${InCharacter} \
-nationalCharacterSet AL16UTF16 \
-storageType ASM \
-diskGroupName +${DiskGroupName} \
-nodelist ${NodeList} \
-asmSysPassword oracle \
-initParams processes=1500,pga_aggregate_target=${PGASize},sga_target=${SGASize} \
-createAsContainerDatabase true \
-pdbName ${PDBName} \
-numberOfPDBs 1 \
-pdbAdminPassword oracle
fi
}
####################################################################################
#entrance of script
####################################################################################
UnzipAndInstallRdbms
InstallInstance
