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