oracle 11g 静默安装脚本,安装很方便,已验证,很爽!
更爽的docker方式安装oracle 11g笔记:https://mhsj.net/89.html
#!/bin/bash #Global environment variable #oracle安装包放置/tmp/目录下 HostIP="192.168.9.119" HostName="centos7_119" echo "${HostIP} ${HostName}" >> /etc/hosts OracleUserPasswd="oracle" #oraclet用户的密码 ORACLE_DB_PASSWD="oracle" #数据库的密码 ORACLE_BASE="/u01/app/oracle" ORACLE_HOME="${ORACLE_BASE}/product/11.2.0" ORACLE_SID="orcl" NLS_LANG="AMERICAN_AMERICA.ZHS16GBK" #系统变量 CHARACTERSET="ZHS16GBK" #dbca_rsp数据库编码 GDBNAME="ORCL.ABC.COM" #数据库格式:<db_name>.<db_domain> #域名由各国文字的特定字符集、英文字母、数字及“-”(即连字符或减号)任意组合而成, 但开头及结尾均不能含有“-”。 #内存计算,#物理内存不少于1G,swap分区空间不少于2G kernel.shmmax MemTotle_BYTE=`awk '($1 == "MemTotal:"){print $2}' /proc/meminfo` #内存(byte) MemTotle_BYTE_KERNEL=`echo $MemTotle_BYTE | awk '{print $1-1}'` #除以2 MemTotle_BYTE_KERNEL=`echo $MemTotle_BYTE_KERNEL | awk -F"." '{print $1}'` #去除小数点 if [[ $MemTotle_BYTE_KERNEL -lt 1073741824 ]];then MemTotle_BYTE_KERNEL="1073741824" echo "内存少于1G手动设置为1073741824(1G)" else echo "内存大于于1G:${MemTotle_BYTE_KERNEL}" fi MemTotle_MB=`awk '($1 == "MemTotal:"){print $2/1024}' /proc/meminfo` #内存(MB) MemTotle_MB_80=`echo $MemTotle_MB | awk -F"." '{print $1*0.8}'` #内存的80% MemTotle_MB_80=`echo $MemTotle_MB_80 | awk -F"." '{print $1}'` #去除小数点 #安装文件参数配置的临时文件 rm -f /tmp/oracle_env_tmp.txt rm -f /tmp/kernel_config_tmp.txt rm -f /tmp/oracle_install_rsp.txt rm -f /tmp/oracle_dbca_rsp.txt #oracle 用户变量设置 cat >> /tmp/oracle_env_tmp.txt <<EOF #oracle 用户变量设置 NLS_LANG=${NLS_LANG} ORACLE_BASE=${ORACLE_BASE} ORACLE_HOME=\${ORACLE_BASE}/product/11.2.0 ORACLE_SID=${ORACLE_SID} PATH=\$PATH:\${ORACLE_HOME}/bin export NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID PATH echo "oracle .bash_profile exec!!!" EOF cat >> /tmp/kernel_config_tmp.txt <<EOF #oracle 优化 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = ${MemTotle_BYTE_KERNEL} kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 EOF cat >> /tmp/oracle_install_rsp.txt <<EOF oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=${HostName} UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=${ORACLE_BASE}/inventory SELECTED_LANGUAGES=en,zh_CN ORACLE_HOME=${ORACLE_BASE}/product/11.2.0 oracle.install.db.config.starterdb.SID=${ORACLE_SID} ORACLE_BASE=${ORACLE_BASE} oracle.install.db.InstallEdition=EE oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=dba DECLINE_SECURITY_UPDATES=true EOF #/data/oracle/oradata #/data/oracle/fast_recovery_area #GDBNAME 全局数据库名 cat >> /tmp/oracle_dbca_rsp.txt <<EOF GDBNAME="${GDBNAME}" SID="${ORACLE_SID}" SYSPASSWORD="${ORACLE_DB_PASSWD}" SYSTEMPASSWORD="${ORACLE_DB_PASSWD}" SYSMANPASSWORD="${ORACLE_DB_PASSWD}" DBSNMPPASSWORD="${ORACLE_DB_PASSWD}" DATAFILEDESTINATION=${ORACLE_BASE}/oradata RECOVERYAREADESTINATION=${ORACLE_BASE}/fast_recovery_area CHARACTERSET="${CHARACTERSET}" TOTALMEMORY="${MemTotle_MB_80}" EOF #其中TOTALMEMORY = "1638" 为1638MB,物理内存2G*百分之80"。 #---------------------------------------------------------------------------------# #Judgment parameter function print_color () #颜色输出函数 { case $1 in red) echo -e "\033[31m$2 \033[0m" ;; green) echo -e "\033[32m$2 \033[0m" ;; yellow) echo -e "\033[33m$2 \033[0m" ;; blue) echo -e "\033[34m$2 \033[0m" ;; *) echo -e "\033[31m[颜色错误]$2 \033[0m" ;; esac } function j_para() { print_color "green" "检查参数!" #判断必要参数是否存在 if [ ${HostIP} == '' -a ${ORACLE_SID} == '' ];then echo -e "\033[34mInstallNotice >>\033[0m \033[05;31mPlease config HostIP&ORACLE_SID\033[0m" exit fi print_color "green" "HOSTNAME:${HostName},IP:${HostIP},SID:${ORACLE_SID}" #判断数据库包文件是否存在 if [ ! -f "/tmp/linux.x64_11gR2_database_1of2.zip" ]; then print_color "red" "/tmp/linux.x64_11gR2_database_1of2.zip not found" exit elif [ ! -f "/tmp/linux.x64_11gR2_database_2of2.zip" ]; then print_color "red" "/tmp/linux.x64_11gR2_database_2of2.zip not found" exit fi if [ -d "/tmp/database/" ];then print_color "red" "/tmp/database/ 已存在,目录冲突,请删除,再执行脚本!" exit 1 fi user_i=`cat /etc/passwd | cut -f1 -d':' | grep -w "oracle" -c` if [ $user_i -gt 0 ]; then #显示用户存在 print_color "red" "oracle用户已存在!请备份home目录,并执行userdel -r oracle,删除用户!" exit 1 fi } #install package function install_package() { print_color "green" "正在yum安装必要的包..." yum install -y -q binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 \ glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 \ libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 \ libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat \ unixODBC unixODBC-devel gcc gcc-c++ libXext libXext.i686 zlib-devel zlib-devel.i686 unzip wget vim epel-release } #base_config function base_config() { # echo "${HostIP} ${HostName}" >> /etc/hosts sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 systemctl stop firewalld && systemctl disable firewalld print_color "green" "添加oracle用户和组" #添加用户和组 groupadd oinstall && groupadd dba && groupadd oper useradd -g oinstall -G dba,oper oracle && echo "$OracleUserPasswd" | passwd oracle --stdin #mkdir oracle need directory #ORACLE_BASE=/u01/app/oracle #ORACLE_HOME=$ORACLE_BASE/product/11.2.0 print_color "green" "创建基本文件夹" mkdir -p ${ORACLE_HOME} mkdir ${ORACLE_BASE}/oradata #存放数据库的数据目录 mkdir ${ORACLE_BASE}/oinventory #oracle install 安装日志存放目录 mkdir ${ORACLE_BASE}/fast_recovery_area #数据库归档日志放置在fast_recovery_area chmod -R 775 ${ORACLE_BASE} chown -R oracle:oinstall ${ORACLE_BASE} print_color "green" "修改用户的限制文件" echo " oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 " >> /etc/security/limits.conf print_color "green" "修改/etc/pam.d/login文件" echo " session required /lib64/security/pam_limits.so session required pam_limits.so " >> /etc/pam.d/login print_color "green" "修改/etc/profile文件" echo " if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi " >> /etc/profile print_color "green" "设置oracle用户变量" #导入oracle变量。add oracle environmental variable cat /tmp/oracle_env_tmp.txt >> /home/oracle/.bash_profile cat /home/oracle/.bash_profile bash /home/oracle/.bash_profile chmod 755 /home/oracle/.bash_profile rm -f /tmp/oracle_env_tmp.txt } function kernel_config() { #内核优化 #内核参数配置 kernel.shmmax = 1073741824 为本机物理内存(2G)的一半,单位为byte。 print_color "green" "修改内核参数配置文件" cat /tmp/kernel_config_tmp.txt >> /etc/sysctl.conf && sysctl -p -q tail -20 /tmp/kernel_config_tmp.txt } #Decompression oracle file解压 function oracle_file() { print_color "green" "解压oracle安装文件/tmp/linux.x64_11gR2_database_*of2.zip" unzip -qa linux.x64_11gR2_database_1of2.zip && echo "解压成功!!!" if [ "$?" -ne 0 ]; then echo "解压失败, 程序退出!"; exit 1; fi unzip -qa linux.x64_11gR2_database_2of2.zip && echo "解压成功!!!" if [ "$?" -ne 0 ]; then echo "解压失败, 程序退出!"; exit 1; fi mkdir /home/oracle/response chown -R oracle:oinstall /tmp/database chown -R oracle:oinstall /home/oracle/response #get install config file cd /home/oracle/response \cp -a /tmp/database/response/* /home/oracle/response/ if [ "$?" -ne 0 ]; then echo "执行结果: exit $?, 程序退出!"; exit 1; fi } function db_install_rsp() { #替换安装文件参数/home/oracle/response/db_install.rsp print_color "green" "替换文件参数:/home/oracle/response/db_install.rsp" while read line do OLD_IFS="$IFS" IFS="=" arr_cut_01=($line) OLD_IFS="$IFS" IFS="$OLD_IFS" sed -n "s%^${arr_cut_01[0]}.*=\$%$line%p" /home/oracle/response/db_install.rsp sed -i "s%^${arr_cut_01[0]}.*=\$%$line%" /home/oracle/response/db_install.rsp done < /tmp/oracle_install_rsp.txt } function dbca_rsp() { #替换建库文件参数/home/oracle/response/dbca.rsp print_color "green" "替换文件参数:/home/oracle/response/dbca.rsp" while read line do OLD_IFS="$IFS" IFS="=" arr_cut_02=($line) IFS="$OLD_IFS" OLD_IFS="$IFS" sed -n "s%^${arr_cut_02[0]} = .*%$line%p" /home/oracle/response/dbca.rsp sed -n "s%^#${arr_cut_02[0]}[ ]*=.*%$line%p" /home/oracle/response/dbca.rsp sed -i "s%^${arr_cut_02[0]} = .*%$line%" /home/oracle/response/dbca.rsp sed -i "s%^#${arr_cut_02[0]}[ ]*=.*%$line%" /home/oracle/response/dbca.rsp done < /tmp/oracle_dbca_rsp.txt } #start install oracle software and start listen function install_oracle() { print_color "green" "开始安装oracle" #start install oracle oracle_out='/tmp/oracle.out' su - oracle -c "/tmp/database/runInstaller -force -silent -noconfig \ -responseFile /home/oracle/response/db_install.rsp -ignorePrereq" 1> ${oracle_out} echo -e "\033[34mInstallNotice >>\033[0m \033[32m Oracle Install Starting \033[05m...\033[0m" while true; do grep '[FATAL] [INS-10101]' ${oracle_out} &> /dev/null #抓取错误关键字 if [[ $? == 0 ]];then #抓取成功则 安装失败 print_color "red" "Oracle start install has [ERROR]!!!" cat ${oracle_out} exit fi cat /tmp/oracle.out | grep oot.sh #抓取安装完成关键字 if [[ $? == 0 ]];then sleep 3 #/data/soft/oracle/inventory/orainstRoot.sh orainstRoot_sh=`cat /tmp/oracle.out | grep oot.sh | awk '{print $0}' | head -1` print_color "yellow" "开始执行:${orainstRoot_sh}" ${orainstRoot_sh} #运行sh脚本 if [[ $? == 0 ]]; then print_color "green" "Script 1 run ok" else print_color "red" "Script 1 run faild" exit 1 #错误则退出 fi sleep 3 # /data/soft/oracle/product/11.2.0/root.sh root_sh=`cat /tmp/oracle.out | grep oot.sh | awk '{print $0}' | tail -1` #运行sh脚本 print_color "yellow" "开始执行:${root_sh}" ${root_sh} if [[ $? == 0 ]];then print_color "green" "Script 2 run ok" else print_color "red" "Script 2 run faild" exit 1 #错误则退出 fi #start listen print_color "green" "以静默方式配置监听..." #以静默方式配置监听 su - oracle -c "netca /silent /responsefile /home/oracle/response/netca.rsp" if [ "$?" -ne 0 ]; then echo "执行结果: exit $?, 程序退出!"; exit 1; fi netstat -anptu | grep 1521 if [[ $? == 0 ]]; then print_color "green" "Oracle run listen" break else print_color "red" "Oracle no run listen" exit fi fi sleep 3 done } #以静默方式建立新库install oracle single instance function CreateDatabase() { print_color "green" "Start CreateDatabase..." #密码已经在文件中定义 su - oracle -c "dbca -silent -createDatabase -responseFile /home/oracle/response/dbca.rsp || echo 'dbca执行失败,请检查dbca.rsp与安装日志'" su - oracle -c "ps -ef | grep ora_ | grep -v grep" su - oracle -c "lsnrctl status" } function main() { kernel_config && \ j_para && \ install_package && \ base_config && \ oracle_file && \ db_install_rsp && \ dbca_rsp && \ install_oracle && \ CreateDatabase && \ print_color "green" "Oracle 11g 安装完成!" || print_color "red" "Oracle 11g 安装失败!" exit 0 } #run script main
脚本下载:
转载请注明:梦绘设计 » 数据库 » oracle 11g 静默安装一键脚本
版权声明
本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。