基于centos7自动部署Oracle11g数据库

概述

闲来无事,把Oracle11g的自动部署脚本也写了,仅供参考。
19c的后面抽空再写了…
这里主要是考虑单机的,因为RAC的手动去装会好点,且没相关需求,就懒得写了…

一、自动部署脚本:

环境:centos7

1、整体安装步骤如下:

[1]配置主机名和hosts文件
[2]禁用selinux和防火墙
[3]配置Swap内存
[4]下载安装包
[5]安装依赖包
[6]创建用户&文件夹及授权
[7]禁用avahi服务
[8]禁用透明大页和numa
[9]禁用NetworkManager
[10]配置sysctl.conf
[11]配置nsysctl.conf
[12]配置limits.conf
[13]配置pam.d认证
[14]配置/dev/shm
[15]安装rlwrap
[16]配置环境变量
[17]解压安装包
[18]安装数据库软件
[19]创建数据库实例
[20]数据库参数初始化
[21]数据库归档及闪回配置
[22]配置数据库开机启动
[23]配置数据库归档脚本
[24]配置数据库备份脚本
[25]配置密码生命周期
[26]配置低版本数据库连接

2、实用脚本

#!/bin/bash
####################################################
#copyright by hwb
#Date:2021-08-19
#Function: Oracle 11g(Single) install on Linux 7
####################################################
#Oracle安装步骤:
#[1]配置主机名和hosts文件
#[2]禁用selinux和防火墙
#[3]配置Swap内存
#[4]下载安装包
#[5]安装依赖包 
#[6]创建用户&文件夹及授权
#[7]禁用avahi服务
#[8]禁用透明大页和numa
#[9]禁用NetworkManager
#[10]配置sysctl.conf
#[11]配置nsysctl.conf
#[12]配置limits.conf
#[13]配置pam.d认证
#[14]配置/dev/shm
#[15]安装rlwrap
#[16]配置环境变量
#[17]解压安装包
#[18]安装数据库软件
#[19]创建数据库实例
#[20]数据库参数初始化
#[21]数据库归档及闪回配置
#[22]配置数据库开机启动
#[23]配置数据库归档脚本
#[24]配置数据库备份脚本
#[25]配置密码生命周期
#[26]配置低版本数据库连接
####################################################

# Parameters For Install
####################################################################################
#Oracle Install Mode(Single)
#RELS=$(more /etc/system-release)
#OS_VER_PRI=$(echo "${RELS#*release}" | awk '{print $1}' | cut -f 1 -d '.')
DAYTIME=$(date +%Y%m%d)
memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
swapTotal=$(grep -i 'swaptotal' /proc/meminfo | awk '{print $2}')
shmTotal=$(df -k /dev/shm | awk '{print $2}' | head -n 2 | tail -n 1)
ORA_HOSTNAME="dfwlg_tms_prod"
PUBLICIP=xx.87
ORACLE_SID=tms
ORAPASSWD=xxx1234
SYSPASSWD=oracle
SYSTEMPASSWD=oracle
#文件路径
ENV_BASE_DIR=/u01/app
ENV_ORACLE_BASE=$ENV_BASE_DIR/oracle
ENV_ORACLE_INVEN=$ENV_BASE_DIR/oraInventory
ENV_ORACLE_HOME=$ENV_ORACLE_BASE/product/11.2.0/db
ORADATADIR=/oradata
ARCHIVEDIR=/arch
BACKUPDIR=/backup
SCRIPTSDIR=/home/oracle/scripts
#AL32UTF8,ZHS16GBK
CHARACTERSET=AL32UTF8
DB_VERSION=11.2.0.4
RESPONSEFILE_VERSION=11.2
SOFTWAREDIR=/opt
oracleinstalllog="$SOFTWAREDIR/oracle11g_$(date +"%Y%m%d_%H%M%S").log"



#调用函数库
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
source /etc/profile

#Require root to run this script.
[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本!" && exit 1

#"stty erase ^H"  设置backspace为删除键
\cp /root/.bash_profile  /root/.bash_profile_$(date +%F)
erase=`grep -wx "stty erase ^H" /root/.bash_profile |wc -l`
if [ $erase -lt 1 ];then
    echo "stty erase ^H" >>/root/.bash_profile
    source /root/.bash_profile
fi


function oracle11g_install(){
	echo ""
	echo -e "\033[33m**********************************oracle 11g 部署***************************************************\033[0m"

####################################################################################
## Add colors to fonts through variables
####################################################################################
function c1() {
	RED_COLOR='\E[1;31m'
	GREEN_COLOR='\E[1;32m'
	YELLOW_COLOR='\E[1;33m'
	BLUE_COLOR='\E[1;34m'
	PINK_COLOR='\E[1;35m'
	WHITE_BLUE='\E[47;34m'
	DOWN_BLUE='\E[4;36m'
	FLASH_RED='\E[5;31m'
	RES='\E[0m'

#Here it is judged whether the incoming parameters are not equal to 2, if not equal to 2, prompt and exit
	if [ $# -ne 2 ]; then
		echo "Usage $0 content {red|yellow|blue|green|pink|wb|db|fr}"
		exit
	fi

	case "$2" in
		red | RED)
			echo -e "${RED_COLOR}$1${RES}"
			;;
		yellow | YELLOW)
			echo -e "${YELLOW_COLOR}$1${RES}"
			;;
		green | GREEN)
			echo -e "${GREEN_COLOR}$1${RES}"
			;;
		blue | BLUE)
			echo -e "${BLUE_COLOR}$1${RES}"
			;;
		pink | PINK)
			echo -e "${PINK_COLOR}$1${RES}"
			;;
		wb | WB)
			echo -e "${WHITE_BLUE}$1${RES}"
			;;
		db | DB)
			echo -e "${DOWN_BLUE}$1${RES}"
			;;
		fr | FR)
			echo -e "${FLASH_RED}$1${RES}"
			;;
		*)
			echo -e "Please enter the specified color code:{red|yellow|blue|green|pink|wb|db|fr}"
			;;
	esac
}
##Example
##c1 "Program installation error!" red
##c1 "The program is successfully installed!" green
##c1 "Output related annotation information" blue

####################################################################################
## Log Write
####################################################################################
function logwrite() {
	{
		c1 "####################################################################################" green
		echo
		c1 "# $1" blue
		echo
		c1 "####################################################################################" green
		echo
		echo "$1 :"
		echo
		echo "$2" > ${SOFTWAREDIR}/ex.sh
		chmod +x ${SOFTWAREDIR}/ex.sh
		${SOFTWAREDIR}/ex.sh
		rm -rf ${SOFTWAREDIR}/ex.sh  #考虑去掉
		echo
	} >> ${oracleinstalllog}
}

##Example
##logwrite "HostName" "hostname"
##logwrite "Firewalld" "systemctl status firewalld"

####################################################################################
# Configure hostname and hosts
####################################################################################
	action "[1]配置主机名和hosts文件..." /bin/true
	/usr/bin/hostnamectl set-hostname $ORA_HOSTNAME
	logwrite "HOSTNAME Check" "hostname"

	if [ "$(grep -E -c "#OracleBegin" /etc/hosts)" -eq 0 ]; then
		[ ! -f /etc/hosts."${DAYTIME}" ] && cp /etc/hosts /etc/hosts."${DAYTIME}"
		cat >>/etc/hosts <<EOF
##OracleBegin
#Public IP
$PUBLICIP	$ORA_HOSTNAME
EOF
	fi
	logwrite "/etc/hosts Check" "cat /etc/hosts"

####################################################################################
## Disable firewall and selinux
####################################################################################
	action "[2]禁用selinux和防火墙..." /bin/true
	systemctl stop firewalld && systemctl disable firewalld
	sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
	setenforce 0
	logwrite "Disable firewall and selinux" "systemctl status firewalld"

####################################################################################
# Check Swap
####################################################################################
	action "[3]配置Swap内存..." /bin/true
	COUNT=
	if [ "${memTotal}" -ge 1048576 ] && [ "${memTotal}" -le 2097152 ]; then
		swapNeed=$((memTotal * 3 / 2))
		if [[ ${swapNeed} -gt ${swapTotal} ]]; then
			COUNT=$((swapNeed - swapTotal))
		fi
	elif [ "${memTotal}" -gt 2097152 ] && [ "${memTotal}" -le 16777216 ]; then
		swapNeed=$memTotal
		if [[ ${swapNeed} -gt ${swapTotal} ]]; then
			COUNT=$((swapNeed - swapTotal))
		fi
	elif [ "${memTotal}" -gt 16777216 ]; then
		swapNeed=16777216
		if [[ ${swapNeed} -gt ${swapTotal} ]]; then
			COUNT=$((swapNeed - swapTotal))
		fi
	else
		echo ""
		c1 "At least 1 GB RAM for Oracle Database installations. 2 GB RAM recommended." red
		exit 99
	fi

  ##set swap space
	if [ -n "${COUNT}" ] && [ ! -f /swapfile ] && [ ${COUNT} -gt 40 ]; then
		c1 "Now Setting SWAP SPACE........" blue
		COUNT=$((COUNT / 1024 / 1024 + 1))
		dd if=/dev/zero of=/swapfile bs=1G count=${COUNT}
		mkswap /swapfile   #将文件格式化为swap文件格式
		chmod 0600 /swapfile
		swapon /swapfile   #启动swap分区
		echo "/swapfile swap swap defaults 0 0" >>/etc/fstab
		mount -a
	fi
	logwrite "SWAP Check" "swapon -s"



####################################################################################
## Download packages
####################################################################################
	action "[4]下载安装包..." /bin/true
	if [ -f $SOFTWAREDIR/p13390677_112040_Linux-x86-64_1of7.zip ] && [ -f $SOFTWAREDIR/p13390677_112040_Linux-x86-64_2of7.zip ]  && [ -f $SOFTWAREDIR/rlwrap-0.37.tar.gz ] ;then
		c1 "$SOFTWAREDIR已存在Oracle数据库安装包,无需下载." yellow
	else
		ping -c 4 app.fslgz.com >/dev/null 2>&1
		if [ $? -eq 0 ];then
			wget -q  https://app.fslgz.com/portal/api/public/fs/association/file/downLoad?uploadId=877191727792848896 -O $SOFTWAREDIR/rlwrap-0.37.tar.gz
			wget -q https://app.fslgz.com/portal/api/public/fs/association/file/downLoad?uploadId=877206934221029376 -O $SOFTWAREDIR/p13390677_112040_Linux-x86-64_1of7.zip
			wget -q https://app.fslgz.com/portal/api/public/fs/association/file/downLoad?uploadId=877205824064258048 -O $SOFTWAREDIR/p13390677_112040_Linux-x86-64_2of7.zip
			
			if [  "$(du -sm /opt/p13390677_112040_Linux-x86-64_1of7.zip | awk '{print $1}')" -gt 1200 ] && [  "$(du -sm /opt/p13390677_112040_Linux-x86-64_2of7.zip | awk '{print $1}')" -gt 1000 ]; then
				c1 "成功下载Oracle数据库安装包." green
			else
				c1 "下载Oracle数据库安装包失败." red
				exit 99
			fi			
		else
			c1 "请手动下载Oracle数据库安装包并上传到${SOFTWAREDIR}目录!" red
			exit 99
		fi
	fi
	
	logwrite "Download packages" "ls -l $SOFTWAREDIR"


####################################################################################
#install rpm that oracle is necessary for installing
####################################################################################
	action "[5]安装依赖包..." /bin/true
	yum groupinstall -y "Server with GUI" >/dev/null 2>&1 && yum install -y tigervnc* >/dev/null 2>&1
	if [ "$(rpm -q bc binutils compat-libcap1 compat-libstdc++-33 unixODBC gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline psmisc --qf '%{name}.%{arch}\n' | grep -E -c "not installed|未安装")" -gt 0 ]; then
		yum install -y bc \
          binutils \
          compat-libcap1 \
          compat-libstdc++-33 \
          gcc \
          gcc-c++ \
          elfutils-libelf \
          elfutils-libelf-devel \
          glibc \
          glibc-devel \
          ksh \
          libaio \
          libaio-devel \
          libgcc \
          libstdc++ \
          libstdc++-devel \
		  libXext \
          libxcb \
          libX11 \
          libXau \
          libXi \
          libXtst \
          libXrender \
          libXrender-devel \
          make \
          net-tools \
          nfs-utils \
          smartmontools \
          sysstat \
          e2fsprogs \
          e2fsprogs-libs \
          fontconfig-devel \
		  unixODBC \
		  unixODBC-devel \
		  zlib-devel \
          expect \
          unzip \
          openssh-clients \
          readline* \
          psmisc --skip-broken >/dev/null 2>&1
	fi
  
	logwrite "RPM Check" "rpm -q bc binutils compat-libcap1 compat-libstdc++-33 unixODBC gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline"




####################################################################################
# create user and directory
####################################################################################
	action "[6]创建用户&文件夹及授权..." /bin/true
##create user
	[ "$(grep -E -c "oinstall" /etc/group)" -eq 0 ] && /usr/sbin/groupadd -g 54321 oinstall
	[ "$(grep -E -c "dba" /etc/group)" -eq 0 ] && /usr/sbin/groupadd -g 54322 dba
	[ "$(grep -E -c "oper" /etc/group)" -eq 0 ] && /usr/sbin/groupadd -g 54323 oper
	[ "$(grep -E -c "backupdba" /etc/group)" -eq 0 ] && /usr/sbin/groupadd -g 54324 backupdba
	[ "$(grep -E -c "dgdba" /etc/group)" -eq 0 ] && /usr/sbin/groupadd -g 54325 dgdba
	[ "$(grep -E -c "kmdba" /etc/group)" -eq 0 ] && /usr/sbin/groupadd -g 54326 kmdba
	[ "$(grep -E -c "racdba" /etc/group)" -eq 0 ] && /usr/sbin/groupadd -g 54330 racdba
	if [ "$(grep -E -c "oracle" /etc/passwd)" -eq 0 ]; then
		if ! /usr/sbin/useradd -u 54321 -g oinstall -G dba,backupdba,dgdba,kmdba,racdba,oper oracle; then
			cl "Command failed to adding user --oracle." red
			exit 93
		fi
	else
		/usr/sbin/usermod -g oinstall -G dba,backupdba,dgdba,kmdba,racdba,oper oracle
	fi

##create directory
	[ ! -d "${ENV_BASE_DIR}" ] && mkdir -p ${ENV_BASE_DIR}
	[ ! -d "${ENV_ORACLE_BASE}" ] && mkdir -p ${ENV_ORACLE_BASE}
	[ ! -d "${ENV_ORACLE_HOME}" ] && mkdir -p ${ENV_ORACLE_HOME}
	[ ! -d "${ENV_ORACLE_INVEN}" ] && mkdir -p ${ENV_ORACLE_INVEN}
	[ ! -d "${ORADATADIR}" ] && mkdir -p ${ORADATADIR}
	[ ! -d "${ARCHIVEDIR}" ] && mkdir -p ${ARCHIVEDIR}
	[ ! -d "${BACKUPDIR}" ] && mkdir -p ${BACKUPDIR}
	[ ! -d "${SCRIPTSDIR}" ] && mkdir -p ${SCRIPTSDIR}
	mkdir -p ${BACKUPDIR}/oradata && mkdir -p ${BACKUPDIR}/log && mkdir -p ${BACKUPDIR}/arch && mkdir -p ${BACKUPDIR}/control
	chown -R oracle:oinstall /u01
	chown -R oracle:oinstall ${ENV_BASE_DIR} && chmod -R 775 ${ENV_BASE_DIR}
	chown -R oracle:oinstall ${ORADATADIR}
	chown -R oracle:oinstall ${ARCHIVEDIR}
	chown -R oracle:oinstall ${BACKUPDIR}
	chown -R oracle:oinstall ${SCRIPTSDIR}
	
##Judge $ENV_BASE_DIR DISK SPACE
	BASEDIR_SPACE=$(df "${ENV_BASE_DIR}" | tail -n 1 | awk '{printf $4}')
	BASEDIR_SPACE=$((BASEDIR_SPACE / 1024 / 1024))
	if [ "${BASEDIR_SPACE}" -lt 50 ]; then
		c1 "${ENV_BASE_DIR} Disk Space ${BASEDIR_SPACE}G is not enough (50G), Install Maybe Failed." red
		sleep 3
	fi

##Set user oracle's password
	if ! echo "${ORAPASSWD}" | passwd --stdin oracle; then
		c1 "User oracle is not existing." red
		exit 92
	fi

	logwrite "Create user and directory(oracle)" "id oracle"



####################################################################################
#Stop avahi deamon
####################################################################################
	action "[7]禁用avahi服务..." /bin/true
	yum install -y avahi* >/dev/null 2>&1
	if [ "$(systemctl status avahi-daemon | grep -c running)" -gt 0 ]; then
		systemctl stop avahi-daemon.socket
		systemctl stop avahi-daemon.service
		pgrep -f avahi-daemon | awk '{print "kill -9 "$2}'
	fi
	systemctl disable avahi-daemon.service
	systemctl disable avahi-daemon.socket
	logwrite "Stop avahi-daemon" "systemctl status avahi-daemon"


####################################################################################
# Disable transparent_hugepages&&numa
####################################################################################
# 如果有大页需求,Oracle建议使用标准的大页提升性能,严禁使用透明大页。透明大页与标准大页的区别在于可以在系统运行时分配内存,而标准大页只能重启生效。
# Linux下的大页分为两种类型:标准大页(Huge Pages)和透明大页(Transparent Huge Pages)。
# 1). 标准大页(Huge Pages)是从Linux Kernel 2.6后被引入的。目的是使用更大的内存页面(memory page size) 以适应越来越大的系统内存,让操作系统可以支持现代硬件架构的大页面容量功能。
# 2). 透明大页(Transparent Huge Pages)缩写为THP,这个是RHEL 6开始引入的一个功能。
# 这两者的区别在于大页的分配机制,标准大页管理是预分配的方式,而透明大页管理则是动态分配的方式。目前透明大页与传统大页混合使用会出现一些问题,导致性能问题和系统重启。ORACLE官方不建议在使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 时开启透明大页(THP), 因为透明大页存在一些问题:
# 1.在RAC环境下 透明大页(Transparent HugePages )会导致异常节点重启和性能问题;
# 2.在单机环境中,透明大页(Transparent HugePages ) 也会导致一些异常的性能问题;
	action "[8]禁用透明大页和numa..." /bin/true
	if [ "$(grep -E -c "/sys/kernel/mm/transparent_hugepage/enabled" /etc/rc.d/rc.local)" -eq 0 ]; then
		cat >>/etc/rc.d/rc.local <<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
	echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
EOF
		chmod u+x /etc/rc.d/rc.local
	fi

	if [ "$(grep -E -c "transparent_hugepage=never numa=off" /etc/default/grub)" -eq 0 ]; then
      [ ! -f /etc/default/grub."${DAYTIME}" ] && cp /etc/default/grub /etc/default/grub."${DAYTIME}"
      sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
      grub2-mkconfig -o /boot/grub2/grub.cfg
    fi

    logwrite "/etc/default/grub配置" "cat /etc/default/grub"
	logwrite "Transparent_hugepages配置" "cat /sys/kernel/mm/transparent_hugepage/enabled"
	logwrite "NUMA配置" "cat /proc/cmdline"


####################################################################################
# Disable NetworkManager
####################################################################################
	action "[9]禁用NetworkManager..." /bin/true
#Turn off the NetworkManager(Linux 7)
    if [ "$(systemctl status NetworkManager.service | grep -c running)" -gt 0 ]; then
      systemctl stop NetworkManager.service
      systemctl disable NetworkManager.service
    fi
    logwrite "Disable NetworkManager" "systemctl status NetworkManager"

####################################################################################
# Edit sysctl.conf
####################################################################################
##shmmal's Calculation formula: physical memory 8G:(8*1024*1024*1024)/4096=2097152
##shmmax's Calculation formula: physical memory 8G:(8/2)*1024*1024*1024 -1=4294967295
	action "[10]配置sysctl.conf..." /bin/true
	totalMemory=$((memTotal / 2048))
	shmall=$((memTotal / 4))
	[ $shmall -lt 2097152 ] && shmall=2097152
	shmmax=$((memTotal * 1024 - 1))
	[ $shmmax -lt 4294967295 ] && shmmax=4294967295
	if [ "$(grep -E -c "#OracleBegin" /etc/sysctl.conf)" -eq 0 ]; then
		[ ! -f /etc/sysctl.conf."${DAYTIME}" ] && cp /etc/sysctl.conf /etc/sysctl.conf."${DAYTIME}"
		cat <<EOF >>/etc/sysctl.conf
#OracleBegin
##shmmal's Calculation formula: physical memory 8G:(8*1024*1024*1024)/4096=2097152
##shmmax's Calculation formula: physical memory 8G:(8/2)*1024*1024*1024 -1=4294967295
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF
		sysctl -p
	fi
    
	
    logwrite "/etc/sysctl.conf配置" "sysctl -p"

####################################################################################
# Edit nsysctl.conf
####################################################################################
	action "[11]配置nsysctl.conf..." /bin/true
	if [ "$(grep -E -c "#OracleBegin" /etc/sysconfig/network)" -eq 0 ]; then
		[ ! -f /etc/sysconfig/network."${DAYTIME}" ] && cp /etc/sysconfig/network /etc/sysconfig/network."${DAYTIME}"
cat >> /etc/sysconfig/network <<EOF
#OracleBegin
NOZEROCONF=yes
#OracleEnd
EOF
	fi

	logwrite "NOZEROCONF配置" "cat /etc/sysconfig/network"

####################################################################################
# Edit limits.conf
####################################################################################
	action "[12]配置limits.conf..." /bin/true
	sed -i 's/*          soft    nproc     4096/*          -       nproc     16384/g' /etc/security/limits.d/20-nproc.conf
    logwrite "/etc/security/limits.d/20-nproc.conf" "cat /etc/security/limits.d/20-nproc.conf | grep -v \"^\$\"|grep -v \"^#\""
  
	if [ "$(grep -E -c "#OracleBegin" /etc/security/limits.conf)" -eq 0 ]; then
		[ ! -f /etc/security/limits.conf."${DAYTIME}" ] && cp /etc/security/limits.conf /etc/security/limits.conf."${DAYTIME}"
cat <<EOF >>/etc/security/limits.conf
#OracleBegin
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard memlock 134217728
oracle soft memlock 134217728
#OracleEnd
EOF
    fi
	logwrite "/etc/security/limits.conf配置" "cat /etc/security/limits.conf | grep -v \"^\$\"|grep -v \"^#\""

####################################################################################
# Edit pam.d
####################################################################################
	action "[13]配置pam.d认证..." /bin/true
	if [ "$(grep -E -c "#OracleBegin" /etc/pam.d/login)" -eq 0 ]; then
cat <<EOF >>/etc/pam.d/login
#OracleBegin
session required pam_limits.so 
session required /lib64/security/pam_limits.so
#OracleEnd
EOF
	fi

	logwrite "/etc/pam.d/login配置" "cat /etc/pam.d/login | grep -v \"^\$\"|grep -v \"^#\""

####################################################################################
# Configure /dev/shm
####################################################################################
	action "[14]配置/dev/shm..." /bin/true
	if [ "$(grep -E -c "/dev/shm" /etc/fstab)" -eq 0 ]; then
		[ ! -f /etc/fstab."${DAYTIME}" ] && cp /etc/fstab /etc/fstab."${DAYTIME}"
cat <<EOF >>/etc/fstab
tmpfs /dev/shm tmpfs size=${memTotal}k 0 0
EOF
		mount -o remount /dev/shm
	else
		if [ "$shmTotal" -lt "$memTotal" ]; then
			shmTotal=$memTotal
			[ ! -f /etc/fstab."${DAYTIME}" ] && cp /etc/fstab /etc/fstab."${DAYTIME}"
			line=$(grep -n "/dev/shm" /etc/fstab | awk -F ":" '{print $1}')
			sed -i "${line} d" /etc/fstab
			cat <<EOF >>/etc/fstab
tmpfs /dev/shm tmpfs size=${memTotal}k 0 0
EOF
			mount -o remount /dev/shm
		fi
	fi

	logwrite "/etc/fstab配置" "cat /etc/fstab | grep -v \"^\$\"|grep -v \"^#\""
	logwrite "shm配置" "df -Th /dev/shm"
	logwrite "df -hP" "df -hP"


####################################################################################
# Install rlwrap
####################################################################################
	action "[15]安装rlwrap..." /bin/true
	if [ "$(find "${SOFTWAREDIR}" -maxdepth 1 -name 'rlwrap-*.gz' | wc -l)" -gt 0 ]; then
		if ! rlwrap -v >/dev/null 2>&1; then
			yum install -y tar >/dev/null 2>&1
			mkdir -p ${SOFTWAREDIR}/rlwrap
			tar -zxvf "${SOFTWAREDIR}"/rlwrap*tar.gz --strip-components 1 -C "${SOFTWAREDIR}"/rlwrap >/dev/null 2>&1
			cd "${SOFTWAREDIR}"/rlwrap || return
			./configure >/dev/null 2>&1 && make >/dev/null 2>&1 && make install >/dev/null 2>&1
		fi
		logwrite "rlwrap部署" "rlwrap -v"
		
		if [ "$(find "${SOFTWAREDIR}" -mindepth 1 -name 'rlwrap*' | wc -l)" -gt 0 ]; then
			cd ~ || return
			rm -rf ${SOFTWAREDIR}/rlwrap*
		fi
	fi


####################################################################################
# Edit bash_profile
####################################################################################
	action "[16]配置环境变量..." /bin/true

##ORALCE:
	if [ "$(grep -E -c "#OracleBegin" /home/oracle/.bash_profile)" -eq 0 ]; then
		cat <<EOF >>/home/oracle/.bash_profile
################OracleBegin#########################
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.${CHARACTERSET} #AL32UTF8,ZHS16GBK
export ORACLE_BASE=${ENV_ORACLE_BASE}
export ORACLE_HOME=${ENV_ORACLE_HOME}
export ORACLE_HOSTNAME=${ORA_HOSTNAME}
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=${ORACLE_SID}
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export THREADS_FLAG=native
alias alert='tail -500f \$ORACLE_BASE/diag/rdbms/\$ORACLE_SID/\$ORACLE_SID/trace/alert_\$ORACLE_SID.log|more'
export PS1='\[\033[01m\][\[\033[01;32m\]\u\[\033[00m\]\[\033[01m\]@\[\033[01;34m\]\h\[\033[01;31m\] \[\033[01;31m\]\w\[\033[0m\]] \\$ '
#rlwrap配置
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias lsnrctl='rlwrap lsnrctl'
alias asmcmd='rlwrap asmcmd'
alias adrci='rlwrap adrci'
alias ggsci='rlwrap ggsci'
alias dgmgrl='rlwrap dgmgrl'
################OracleEnd###########################
EOF
	fi

	logwrite "Oracle Profile配置" "cat /home/oracle/.bash_profile | grep -v \"^\$\"|grep -v \"^#\""


####################################################################################
# Unzip DB Software
####################################################################################
	action "[17]解压安装包..." /bin/true
	if [ -d "${SOFTWAREDIR}"/database ]; then
      cd ~ || return
      rm -rf "${SOFTWAREDIR}"/database
    fi
    if unzip -qo "${SOFTWAREDIR}"/p13390677_112040_Linux-x86-64_1of7.zip -d "${SOFTWAREDIR}"; then
      rm -rf "${SOFTWAREDIR}"/p13390677_112040_Linux-x86-64_1of7.zip
      chown -R oracle:oinstall "${SOFTWAREDIR}"/database
    else
      c1 "Make sure the database installation package is in the ${SOFTWAREDIR} directory:" red
      c1 "p13390677_112040_Linux-x86-64_1of7.zip" blue
      exit 99
    fi

    if unzip -qo "${SOFTWAREDIR}"/p13390677_112040_Linux-x86-64_2of7.zip -d "${SOFTWAREDIR}"; then
      rm -rf "${SOFTWAREDIR}"/p13390677_112040_Linux-x86-64_2of7.zip
      chown -R oracle:oinstall "${SOFTWAREDIR}"/database
    else
      c1 "Make sure the database installation package is in the ${SOFTWAREDIR} directory:" red
      c1 "p13390677_112040_Linux-x86-64_2of7.zip" blue
      exit 99
    fi


#Create db.rsp
	[ -f "${SOFTWAREDIR}"/db.rsp ] && rm -rf "${SOFTWAREDIR}"/db.rsp
    cat <<EOF >>"${SOFTWAREDIR}"/db.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=${ORA_HOSTNAME}
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=oper
DECLINE_SECURITY_UPDATES=true
oracle.installer.autoupdates.option=SKIP_UPDATES
EOF

	chown oracle:oinstall "${SOFTWAREDIR}"/db.rsp 
	logwrite "${SOFTWAREDIR}/db.rsp" "cat ${SOFTWAREDIR}/db.rsp"


####################################################################################
# Install Database software
####################################################################################
##Juge whether ${ENV_ORACLE_INVEN}/ContentsXML/inventory.xml contains ${ENV_ORACLE_HOME},if exists ,delete it
# if [ -f "${ENV_ORACLE_INVEN}/ContentsXML/inventory.xml" ] && [ "$(grep -E -c "${ENV_ORACLE_HOME}" "${ENV_ORACLE_INVEN}"/ContentsXML/inventory.xml)" -gt 0 ]; then
#     line=$(grep -n "${ENV_ORACLE_HOME}" "${ENV_ORACLE_INVEN}"/ContentsXML/inventory.xml | awk -F ":" '{print $1}')
#     sed -i "${line} d" "${ENV_ORACLE_INVEN}"/ContentsXML/inventory.xml
# fi
	action "[18]安装数据库软件..." /bin/true
	if ! su - oracle -c "${SOFTWAREDIR}/database/runInstaller -silent -force -showProgress -ignoreSysPrereqs -waitForCompletion -responseFile ${SOFTWAREDIR}/db.rsp -ignorePrereq"; then
		c1 "Sorry, ORALCE Software Install Failed." red
		exit 99
	fi


	if [ -d "/${SOFTWAREDIR}/"database ]; then
		cd ~ || return
		rm -rf "/${SOFTWAREDIR:?}/"database
	fi

	if [ -f "${ENV_ORACLE_INVEN}"/orainstRoot.sh ] || [ -f "${ENV_ORACLE_HOME}"/root.sh ]; then
		if [ -f "${ENV_ORACLE_INVEN}"/orainstRoot.sh ]; then
			"${ENV_ORACLE_INVEN}"/orainstRoot.sh
		fi

		if [ -f "${ENV_ORACLE_HOME}"/root.sh ]; then
			"${ENV_ORACLE_HOME}"/root.sh
		fi
	else
		echo
		c1 "Oracle software installation failed, please check the log." red
		exit 99
	fi

##LINUX7 INSTALL 11G,NEED TO SET -lnnz11
	sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' "${ENV_ORACLE_HOME}"/sysman/lib/ins_emagent.mk

	logwrite "Oracle RDBMS" "su - oracle -c \"sqlplus -V\""

 
####################################################################################
# Create netca.rsp
####################################################################################

	cat <<EOF >>"${SOFTWAREDIR}"/netca.rsp
[GENERAL]
RESPONSEFILE_VERSION="${RESPONSEFILE_VERSION}"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
EOF

	logwrite "${SOFTWAREDIR}/netca.rsp" "cat ${SOFTWAREDIR}/netca.rsp"

	if ! su - oracle -c "netca -silent -responsefile ${SOFTWAREDIR}/netca.rsp"; then
		c1 "Sorry, Listener Create Failed." red
	fi


####################################################################################
## Create database
####################################################################################
	action "[19]创建数据库实例..." /bin/true
	su - oracle -c "lsnrctl start"
    if ! su - oracle -c "dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE -gdbname ${ORACLE_SID}  -sid ${ORACLE_SID} -sysPassword ${SYSPASSWD} -systemPassword ${SYSTEMPASSWD} -redoLogFileSize 120 -storageType FS -datafileDestination ${ORADATADIR} -sampleSchema true -characterSet ${CHARACTERSET} -nationalCharacterSet AL16UTF16 -emConfiguration NONE  -automaticMemoryManagement false -totalMemory ${totalMemory} -databaseType OLTP"; then
		c1 "Sorry, Database Create Failed." red
        exit 99
	fi
    if [ -d "${SOFTWAREDIR}"/database ]; then
      cd ~ || return
      rm -rf "${SOFTWAREDIR:?}"/database
    fi

	logwrite "ORACLE Instance" "su - oracle -c \"lsnrctl status\""

####################################################################################
# Configure DBParaSet
####################################################################################
	action "[20]数据库参数初始化..." /bin/true
	if [ "$(find "/home/oracle" -maxdepth 1 -name '*.sql' | wc -l)" -gt 0 ]; then
		cd ~ || return
		rm -rf /home/oracle/*.sql
	fi
	
	#sessions = 1.1 * processes + 5 
	cat > /home/oracle/oracleParaset.sql << EOF
-- set db_create_file_dest
ALTER SYSTEM SET PROCESSES=1200 SCOPE=SPFILE; 
ALTER SYSTEM SET SESSIONS=1325 SCOPE=SPFILE;  
ALTER SYSTEM SET OPEN_CURSORS=1000 SCOPE=BOTH;
ALTER SYSTEM SET UNDO_RETENTION=10800 SCOPE=SPFILE;
ALTER SYSTEM SET AUDIT_TRAIL=NONE SID='*' SCOPE=SPFILE;
ALTER SYSTEM SET DB_CREATE_FILE_DEST='${ORADATADIR}';
EXIT;
EOF

	chown -R oracle:oinstall /home/oracle/* && chmod -R 755 /home/oracle/*
	su - oracle -c "sqlplus / as sysdba @/home/oracle/oracleParaset.sql" && c1 "数据库参数初始化成功." green
	

####################################################################################
# Configure FRA AND ARCHIVED
####################################################################################
	action "[21]数据库归档及闪回配置..." /bin/true
	if [ "$(find "/home/oracle" -maxdepth 1 -name '*.sql' | wc -l)" -gt 0 ]; then
		cd ~ || return
		rm -rf /home/oracle/*.sql
	fi
	
	#sessions = 1.1 * processes + 5 
	cat > /home/oracle/oracleFra.sql << EOF
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10000m SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST="${ARCHIVEDIR}" SCOPE=BOTH;
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE FLASHBACK ON;
STARTUP;
EXIT;
EOF

	chown -R oracle:oinstall /home/oracle/* && chmod -R 755 /home/oracle/*
	su - oracle -c "sqlplus / as sysdba @/home/oracle/oracleFra.sql"  &&  c1 "数据库归档及闪回配置成功." green

 
####################################################################################
# Configure instances autostart with OS start
####################################################################################
	action "[22]配置数据库开机启动..." /bin/true
	if [ "$(grep -E -c "#OracleBegin" /etc/oratab)" -eq 0 ]; then
		[ ! -f /etc/oratab."${DAYTIME}" ] && cp /etc/oratab /etc/oratab."${DAYTIME}"
		sed -i 's/db:N/db:Y/' /etc/oratab
		sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/' "${ENV_ORACLE_HOME}"/bin/dbstart
		cat <<EOF >>/etc/rc.d/rc.local
#OracleBegin
su oracle -lc "${ENV_ORACLE_HOME}/bin/lsnrctl start"
su oracle -lc ${ENV_ORACLE_HOME}/bin/dbstart
#OracleEnd
EOF
		chmod +x /etc/rc.d/rc.local
	fi

####################################################################################
# Configure del_arch.sh to crontab
####################################################################################
	action "[23]配置数据库归档及备份脚本..." /bin/true

##create del_arch.sh
	if [ ! -f ${SCRIPTSDIR}/del_arch.sh ]; then
		{
		  echo '#!/bin/bash'
		  echo 'source ~/.bash_profile'
		  echo 'deltime=`date +"%Y%m%d%H%M%S"`'
		  echo "rman target / nocatalog msglog  ${BACKUPDIR}/log/del_arch_\${deltime}.log<<EOF"
		  echo 'crosscheck archivelog all;'
		  echo "delete noprompt archivelog until time 'sysdate-14';"
		  echo "delete noprompt force archivelog until time 'SYSDATE-14';"
		  echo "exit;"
		  echo 'EOF'
		} >>${SCRIPTSDIR}/del_arch.sh
	fi
	
	c1 "完成Oracle数据库定期删除归档脚本编写." green
	
	action "[24]配置数据库备份脚本..." /bin/true
##create dbbackup_lv0.sh(0级全备)
	if [ ! -f ${SCRIPTSDIR}/dbbackup_lv0.sh ]; then
		{
		  echo '#!/bin/sh'
		  echo 'source ~/.bash_profile'
		  echo 'backtime=`date +"%Y%m%d%H%M%S"`'
		  echo "rman target / log=${BACKUPDIR}/log/level0_backup_\${backtime}.log<<EOF"
		  echo 'run {'
		  echo "sql 'alter system archive log current';"
		  echo 'allocate channel c1 device type disk;'
		  echo 'allocate channel c2 device type disk;'
		  echo "backup as compressed backupset tag full_backup_level0 incremental level 0 database format '${BACKUPDIR}/oradata/backlv0_%d_%T_%t_%s_%p';"
		  echo "sql 'alter system archive log current';"
          echo "backup as compressed backupset format '${BACKUPDIR}/arch/arch_%T_t%t_s%s_p%p' archivelog all delete input;"
		  echo 'release channel c1;'
		  echo 'release channel c2;'
		  echo 'allocate channel d1 type disk;'
		  echo "backup format '${BACKUPDIR}/control/controlfile_%T_s%s_p%p' current controlfile;"
		  echo 'crosscheck backup;'
		  echo 'crosscheck copy;'
		  echo 'delete noprompt expired backup;'
		  echo 'delete noprompt obsolete;'
		  echo 'release channel d1;'
		  echo '}'
		  echo 'EOF'
		} >>${SCRIPTSDIR}/dbbackup_lv0.sh
	fi

##create dbbackup_lv1.sh(1级增备)
	if [ ! -f ${SCRIPTSDIR}/dbbackup_lv1.sh ]; then
		{
		  echo '#!/bin/sh'
		  echo 'source ~/.bash_profile'
		  echo 'backtime=`date +"20%y%m%d%H%M%S"`'
		  echo "rman target / log=${BACKUPDIR}/log/level1_backup_\${backtime}.log<<EOF"
		  echo 'run {'
		  echo "sql 'alter system archive log current';"
		  echo 'allocate channel c1 device type disk;'
		  echo 'allocate channel c2 device type disk;'
		  echo "backup as compressed backupset tag incr_backup_level1 incremental level 1 database  format '${BACKUPDIR}/oradata/backlv1_%d_%T_%t_%s_%p';"
		  echo "sql 'alter system archive log current';"
		  echo "backup as compressed backupset format '${BACKUPDIR}/arch/archlog_%T_t%t_s%s_p%p' archivelog all delete input;"
		  echo 'release channel c1;'
		  echo 'release channel c2;'
		  echo 'allocate channel d1 type disk;'
		  echo "backup format '${BACKUPDIR}/control/controlfile_%T_s%s_p%p' current controlfile;"
		  echo 'crosscheck backup; '
		  echo 'crosscheck copy;'
		  echo 'delete noprompt expired backup;'
		  echo 'delete noprompt obsolete;'
		  echo "delete noprompt backup of database completed before'sysdate-8';"
		  echo 'release channel d1;'
		  echo '}'
		  echo 'EOF'
		} >>${SCRIPTSDIR}/dbbackup_lv1.sh
	fi

	c1 "完成Oracle数据库备份脚本编写." green
	
####################################################################################
# Configure scripts to crontab
####################################################################################
##Set to oracle crontab
	if [ ! -f /var/spool/cron/oracle ]; then
		echo "##For oracle" >>/var/spool/cron/oracle
	fi
	if [ "$(grep -E -c "#OracleBegin" /var/spool/cron/oracle)" -eq 0 ]; then
		[ ! -f /var/spool/cron/oracle."${DAYTIME}" ] && cp /var/spool/cron/oracle /var/spool/cron/oracle."${DAYTIME}" >/dev/null 2>&1
		chown -R oracle:oinstall ${SCRIPTSDIR}/d*
		chmod +x ${SCRIPTSDIR}/d*
		{
		  echo "#OracleBegin"
		  echo "30 23 * * * ${SCRIPTSDIR}/del_arch.sh"
		  echo "00 00 * * 0 ${SCRIPTSDIR}/dbbackup_lv0.sh"
		  echo "00 00 * * 1-6 ${SCRIPTSDIR}/dbbackup_lv1.sh"
		  echo "#OracleEnd"
		} >>/var/spool/cron/oracle
	fi

	logwrite "Oracle 定时脚本" "su - oracle -c \"crontab -l\"" 

####################################################################################
# Configure PASSWORD_LIFE_TIME UNLIMITED
####################################################################################
	action "[25]配置密码生命周期..." /bin/true
#11g 默认会将 DEFAULT 的 PROFILE 设置登录失败尝试次数(10 次),在无意或恶意的连续使用错误密码连接时,导致数据库用户被锁住,影响业务。因此需要将登录失败尝试次数设为不限制。
	cat > /home/oracle/password_unlimt.sql << EOF
ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LOCK_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION=FALSE;
ALTER SYSTEM SET "_OPTIMIZER_CARTESIAN_ENABLED"=FALSE;
--ALTER SYSTEM SET "_USE_SINGLE_LOG_WRITER"=FALSE SCOPE=SPFILE;
ALTER SYSTEM SET RESULT_CACHE_MAX_SIZE= 0;
ALTER SYSTEM SET event='10949 trace name context forever:28401 trace name context forever,level 1:10849 trace name context forever, level 1:19823 trace name context forever, level 90' scope=spfile;
exit;
EOF
	chown -R oracle:oinstall /home/oracle/* && chmod -R 755 /home/oracle/*

	su - oracle -c "sqlplus / as sysdba @/home/oracle/password_unlimt.sql" && c1 "配置密码生命周期成功." green
	
	# 记录设置后的参数值结果
	cat > /home/oracle/Impliedparameters.sql << EOF
col name for a40
col VALUE for a10
col DESCRIB for a60
set lines 200
SHOW PARAMETER PROCESSES;
SHOW PARAMETER SESSIONS;
SHOW PARAMETER OPEN_CURSORS;
SHOW PARAMETER UNDO_RETENTION;
SHOW PARAMETER AUDIT_TRAIL;
SHOW PARAMETER RECOVER;
ARCHIVE LOG LIST;
SHOW PARAMETER DEFERRED_SEGMENT_CREATION;
SHOW PARAMETER RESULT_CACHE_MAX_SIZE;
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
FROM SYS.x\$ksppi x, SYS.x\$ksppcv y
WHERE x.inst_id = USERENV ('Instance')
AND y.inst_id = USERENV ('Instance')
AND x.indx = y.indx
and x.ksppinm in ('_optimizer_cartesian_enabled','_use_single_log_writer','_use_adaptive_log_file_sync');
exit;
EOF
	chown -R oracle:oinstall /home/oracle/* && chmod -R 755 /home/oracle/*
	logwrite "Oracle Implied parameters" "su - oracle -c \"sqlplus / as sysdba @/home/oracle/Impliedparameters.sql\""

####################################################################################
# Sqlnet.ora Configure lower Oracle client to connect
####################################################################################
	action "[26]配置低版本数据库连接..." /bin/true

	if [ -f "${ENV_ORACLE_HOME}"/network/admin/sqlnet.ora ] && [ "$(grep -E -c "#OracleBegin" "${ENV_ORACLE_HOME}"/network/admin/sqlnet.ora)" -eq 0 ]; then
		[ ! -f "${ENV_ORACLE_HOME}"/network/admin/sqlnet.ora."${DAYTIME}" ] && cp "${ENV_ORACLE_HOME}"/network/admin/sqlnet.ora "${ENV_ORACLE_HOME}"/network/admin/sqlnet.ora."${DAYTIME}"
		su - oracle -c "cat <<EOF >${ENV_ORACLE_HOME}/network/admin/sqlnet.ora
#OracleBegin
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
#OracleEnd
EOF
"
	fi
    
	if [ "$(find "/home/oracle" -maxdepth 1 -name '*.sql' | wc -l)" -gt 0 ]; then
		cd ~ || return
		rm -rf /home/oracle/*.sql
	fi
	c1 "配置低版本数据库连接成功." green
	
	echo ""
	c1 "Congratulations, Install Successful! Please Reboot Later." blue
	echo ""
	echo -e "\033[33m**************************************完成oracle 11g部署**************************************\033[0m"
	cat > /tmp/oracle11g.log  << EOF
Oracle版本:$DB_VERSION
ORACLE IP:$PUBLICIP
ORACLE实例名:$ORACLE_SID
ORACLE数据库密码:$SYSPASSWD
Oracle安装目录:$ENV_ORACLE_HOME
数据文件路径:$ORADATADIR
归档文件路径:$ARCHIVEDIR
备份文件路径:$BACKUPDIR
EOF
	cat /tmp/oracle11g.log
	echo -e "\e[1;31m 以上信息10秒后消失,保存在/tmp/oracle11g.log文件下 \e[0m"
	echo -e "\033[33m**********************************************************************************************\033[0m"
	echo ""
	sleep 10
}

oracle11g_install

二、测试结果

测试结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淡定波007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值