oracle_11g一键部署脚本

#!/bin/bash
#centos7(x86-64)的oracle 11g(x86-64)安装脚本

#oracle 11g(x86-64)下载地址如下:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

#进行安装前请确保安装包的存在,并禁用selinux

#判断selinux状态
selinux=`getenforce`
#判断是否需要重启
if [ $selinux != "Disabled" ];then
sed -i '7c SELINUX=disabled' /etc/selinux/config
echo "selinux配置文件已修改,请重启计算机,并确保selinux状态为:Disabled"
exit
fi
echo "selinux已关闭。"
echo -e "\n*******************************************************************\n"

#判断安装包是否存在
dirname `find / -name linux.x64_11gR2_database_* | head -n 1` 1>/dev/null  2>&1
if [ $? != "0" ];then
echo "安装包不存在,请下载安装包。"
exit        
fi         

#进入11g安装包所在目录
path2=$(dirname `find / -name linux.x64_11gR2_database_* | head -n 1`)
cd $path2

#解压安装包
unzip linux.x64_11gR2_database_1of2.zip 
unzip linux.x64_11gR2_database_2of2.zip
echo "安装包解压成功,开始配置。"  
echo -e "\n*******************************************************************\n"
sleep 1 

#创建安装目录 
mkdir /software &>/dev/null && mv "$path2"/database /software || mv /software /software_2 && mkdir /software && mv "$path2"/database /software
echo "安装目录已创建。"
echo -e "\n*******************************************************************\n"
sleep 1

#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
echo "防火墙已关闭。"
echo -e "\n*******************************************************************\n"
sleep 1

#安装Oracle 11g依赖包
yum install gcc make binutils gcc-c++ compat-libstdc++-33elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel –y &>/dev/null
if [ $? != "0" ];then
echo "依赖包安装失败,请检查您的yum源配置,手动安装以下依赖:yum install gcc make binutils gcc-c++ compat-libstdc++-33elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel –y"
exit
fi
echo "依赖包安装完成。"
echo -e "\n*******************************************************************\n"

#添加安装用户和用户组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
echo "oracle" | passwd --stdin oracle
echo "用户oracle已添加,密码为:oracle"
echo -e "\n*******************************************************************\n"
sleep 1

#修改内核参数配置
echo "
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
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" >> /etc/sysctl.conf
echo "内核参数修改成功:"
sysctl -p;echo "(其中kernel.shmmax 为本机物理内存的一半,单位为byte)"
echo -e "\n*******************************************************************\n"
sleep 1

#修改用户限制文件
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
echo "
session required  /lib64/security/pam_limits.so
session required   pam_limits.so " >> /etc/pam.d/login
echo "
#oracle配置
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
echo "用户限制文件修改成功。"
echo -e "\n*******************************************************************\n"
sleep 1

#创建安装目录和设置权限文件
mkdir -p /data/oracle/product/11.2.0
mkdir /data/oracle/oradata
mkdir /data/oracle/inventory
mkdir /data/oracle/fast_recovery_area
chown -R oracle:oinstall /data/oracle
chmod -R 775 /data/oracle
echo "安装目录已创建,权限已配置。"
echo -e "\n*******************************************************************\n"
sleep 1

#切换oracle用户,开始安装前配置和静默安装
su - oracle <<EOF

#设置oracle用户环境变量
echo 'ORACLE_BASE=/data/oracle
ORACLE_HOME=\$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=\$PATH:\$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH' >> /home/oracle/.bash_profile

source /home/oracle/.bash_profile

echo "oracle用户环境变量设置成功。"
echo -e "\n*******************************************************************\n"
sleep 1

#编辑静默安装响应文件
cp -R /software/database/response/ .
cd response/
sed -i '29c oracle.install.option=INSTALL_DB_SWONLY' /home/oracle/response/db_install.rsp
sed -i '37c ORACLE_HOSTNAME=CentOS' /home/oracle/response/db_install.rsp
sed -i '42c UNIX_GROUP_NAME=oinstall' /home/oracle/response/db_install.rsp
sed -i '47c INVENTORY_LOCATION=/data/oracle/inventory' /home/oracle/response/db_install.rsp
sed -i '78c SELECTED_LANGUAGES=en,zh_CN' /home/oracle/response/db_install.rsp
sed -i '83c ORACLE_HOME=/data/oracle/product/11.2.0' /home/oracle/response/db_install.rsp
sed -i '88c ORACLE_BASE=/data/oracle' /home/oracle/response/db_install.rsp
sed -i '99c oracle.install.db.InstallEdition=EE' /home/oracle/response/db_install.rsp
sed -i '142c oracle.install.db.DBA_GROUP=dba' /home/oracle/response/db_install.rsp
sed -i '147c oracle.install.db.OPER_GROUP=dba' /home/oracle/response/db_install.rsp
sed -i '385c DECLINE_SECURITY_UPDATES=true' /home/oracle/response/db_install.rsp
echo "响应文件已编辑成功。"
echo -e "\n*******************************************************************\n"
sleep 1

#静默安装oracle 11g
cd /software/database/
echo "开始安装:"
./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
echo "\n"

EOF

#退出oracle用户

#执行提示脚本
sh /data/oracle/inventory/orainstRoot.sh
echo -e "\n*******************************************************************\n"
sleep 1

sh /data/oracle/product/11.2.0/root.sh
echo -e "\n*******************************************************************\n"
sleep 1

#切换oracle用户
su - oracle <<EOF

#以静默方式配置监听
netca /silent /responseFile /home/oracle/response/netca.rsp

#以静默方式建立新库,同时建立对应的实例
sed -i '78c GDBNAME = "orcl.test"' /home/oracle/response/dbca.rsp
sed -i '149c SID = "orcl"' /home/oracle/response/dbca.rsp 
sed -i '190c SYSPASSWORD = "123456"' /home/oracle/response/dbca.rsp 
sed -i '200c SYSTEMPASSWORD = "123456"' /home/oracle/response/dbca.rsp 
sed -i '231c SYSMANPASSWORD = "123456"' /home/oracle/response/dbca.rsp 
sed -i '241c DBSNMPPASSWORD = "123456"' /home/oracle/response/dbca.rsp 
sed -i '357c DATAFILEDESTINATION =/data/oracle/oradata' /home/oracle/response/dbca.rsp 
sed -i '367c RECOVERYAREADESTINATION=/data/oracle/fast_recovery_area' /home/oracle/response/dbca.rsp 
sed -i '415c CHARACTERSET = "ZHS16GBK"' /home/oracle/response/dbca.rsp 
sed -i '540c TOTALMEMORY = "1638"' /home/oracle/response/dbca.rsp 
echo "
# SYS管理员密码
SYSPASSWORD = "123456"
# SYSTEM管理员密码
SYSTEMPASSWORD = "123456"
# SYSMAN管理员密码
SYSMANPASSWORD = "123456"
# DBSNMP管理员密码
DBSNMPPASSWORD = "123456"
# 数据文件存放目录
DATAFILEDESTINATION =/data/oracle/oradata
# 恢复数据存放目录
RECOVERYAREADESTINATION=/data/oracle/fast_recovery_area
# 字符集
CHARACTERSET = "ZHS16GBK"
# oracle内存1638MB,物理内存2G*80%
TOTALMEMORY = "1638""
echo -e "\n*******************************************************************\n"
sleep 1

echo "开始静默配置......"
dbca -silent -responseFile /home/oracle/response/dbca.rsp

echo "实例进程检查......"
ps -ef | grep ora_ | grep -v grep
echo -e "\n*******************************************************************\n"
sleep 5

echo "监听状态检查......"
lsnrctl status
echo -e "\n*******************************************************************\n"
sleep 5

echo "oracle 11g已经完全安装完成,数据库信息如下:
全局数据库名:orcl.test
系统标识符 (SID):orcl"
echo -e "\n*******************************************************************\n"

echo "可以使用一下命令进行验证:
su - oracle
sqlplus / as sysdba
SQL> select status from v\$instance;"

EOF

#oracle启动流程

#su - oracle
#lsnrctl start
#lsnrctl status

#sqlplus /nolog

#SQL> conn /as sysdba

#启动实例
#SQL> startup
#SQL> exit
#查看实例
#ps -ef | grep ora_ | grep -v grep

#oracle关闭流程

#关闭实例
#SQL> shutdown
#SQL> quit
#关闭监听器
#lsnrctl stop

  

posted @ 2021-02-24 10:49  cocl666  阅读(405)  评论(0编辑  收藏  举报