#!/bin/bash #install oracle #关闭selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 mount -a #关闭iptables #service iptables stop #chkconfig iptables off firewall-cmd --add-port= 1521 /tcp --permanent firewall-cmd --reload #修改/etc/hosts,hostname hostname oracledb echo "NETWORKING=yes" > /etc/sysconfig/network echo "HOSTNAME=oracledb" >>/etc/sysconfig/network ip=`ifconfig | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' |awk 'NR==1{print $0}' ` #ip=`ifconfig | sed -n '/192.168/p' | awk '{print $1 $2}' |awk -F: '{print $2}' ` echo "$ip oracledb" >>/etc/hosts #安装依赖 yum -y install update expect openssh-clients binutils compat-libstdc++ compat-libstdc++- 33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers ksh libXi libXtst libaio-devel libstdc++-devel make sysstat unixODBC-devel binutils-* compat-libstdc++* elfutils-libelf* glibc* gcc-* libaio* libgcc* libstdc++* make* sysstat* unixODBC* wget unzip java- 1.8 . 0 -openjdk* vim lrzsz wget unzip net-tools --nogpgcheck #检查依赖 #rpm -q update expect openssh-clients binutils compat-libstdc++ compat-libstdc++- 33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers ksh libXi libXtst libaio-devel libstdc++-devel make sysstat unixODBC-devel binutils- compat-libstdc++ elfutils-libelf glibc gcc- libaio libgcc libstdc++ make sysstat unixODBC wget unzip java- 1.8 . 0 -openjdk vim lrzsz wget unzip net-tools | grep "not installed" #创建所需的操作系统组和用户 #修改oracle用户密码 testgroup1=oinstall testgroup2=dba testgroup3=oper testuser=oracle egrep "$testgroup1" /etc/group >/dev/ null if [ $? -eq 0 ];then echo "this $testgroup1 group is exits" else groupadd $testgroup1 fi egrep "$testgroup2" /etc/group >/dev/ null if [ $? -eq 0 ];then echo "this $testgroup2 group is exits" else groupadd $testgroup2 fi egrep "$testgroup3" /etc/group >/dev/ null if [ $? -eq 0 ];then echo "this $testgroup3 group is exits" else groupadd $testgroup3 fi egrep "${{password}}" /etc/passwd >/dev/ null if [ $? -eq 0 ];then echo "this $testuser user is exits" else useradd -g $testgroup1 -G $testgroup2,$testgroup3 $testuser echo "${{password}}" |passwd --stdin $testuser fi #创建软件安装目录,并赋权限 #$ORACLE_BASE sudo mkdir -p "${{INSTALL_PATH}}/oracle" #$ORACLE_HOME sudo mkdir -p "${{INSTALL_PATH}}/oracle/11g" #数据存放目录 sudo mkdir -p "${{INSTALL_PATH}}/oracle/oradata" #清单目录 sudo mkdir -p "${{INSTALL_PATH}}/oracle/inventory" #数据恢复目录 sudo mkdir -p "${{INSTALL_PATH}}/oracle/flash_recovery_area" sudo chown -R oracle:oinstall ${{INSTALL_PATH}}/oracle sudo chmod -R 775 ${{INSTALL_PATH}}/oracle #添加系统参数 sed -i 's/^fs.file-max/#&/g' /etc/sysctl.conf sed -i 's/^kernel.sem/#&/g' /etc/sysctl.conf sed -i 's/^kernel.shmmni/#&/g' /etc/sysctl.conf sed -i 's/^kernel.shmall/#&/g' /etc/sysctl.conf sed -i 's/^kernel.shmmax/#&/g' /etc/sysctl.conf sed -i 's/^net.core.rmem_default/#&/g' /etc/sysctl.conf sed -i 's/^net.core.rmem_max/#&/g' /etc/sysctl.conf sed -i 's/^net.core.wmem_default/#&/g' /etc/sysctl.conf sed -i 's/^net.core.wmem_max/#&/g' /etc/sysctl.conf sed -i 's/^fs.aio-max-nr/#&/g' /etc/sysctl.conf sed -i 's/^net.ipv4.ip_local_port_range/#&/g' /etc/sysctl.conf echo "fs.file-max = 6815744" >>/etc/sysctl.conf echo "kernel.sem = 250 32000 100 128" >>/etc/sysctl.conf echo "kernel.shmmni = 4096" >>/etc/sysctl.conf echo "kernel.shmall = 2097152" >>/etc/sysctl.conf echo "kernel.shmmax = 4294967296" >>/etc/sysctl.conf echo "net.core.rmem_default = 4194304" >>/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 "fs.aio-max-nr = 1048576" >>/etc/sysctl.conf echo "net.ipv4.ip_local_port_range = 9000 65500" >>/etc/sysctl.conf #使内核参数生效 sysctl -p >>/dev/ null #修改用户限制文件 echo "oracle soft nofile 1024" >>/etc/security/limits.conf echo "oracle hard nofile 65536" >>/etc/security/limits.conf echo "oracle soft nproc 2047" >>/etc/security/limits.conf echo "oracle hard nproc 16384" >>/etc/security/limits.conf #关联设置 echo "session required /lib64/security/pam_limits.so" >>/etc/pam.d/login echo "session required pam_limits.so" >>/etc/pam.d/login #设置环境变量 #For root user echo "if [ \$USER = " oracle" ]; then if [ \$SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi">>/etc/profile source /etc/profile #配置oracle用户环境变量 #For Oracle user echo "export ORACLE_HOSTNAME=oracledb" >>/home/oracle/.bash_profile; echo "export ORACLE_BASE=${{INSTALL_PATH}}/oracle" >>/home/oracle/.bash_profile; echo "export ORACLE_HOME=${{INSTALL_PATH}}/oracle/11g" >>/home/oracle/.bash_profile; echo "export ORACLE_SID=${{ORACLE_SID}}" >>/home/oracle/.bash_profile; echo "export PATH=\$PATH:\$HOME/bin:\$ORACLE_HOME/bin" >>/home/oracle/.bash_profile; echo "export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/usr/lib" >>/home/oracle/.bash_profile; #echo "export LC_ALL=en_US.UTF8" >>/home/oracle/.bash_profile; #echo "export LANG=en_US.UTF8" >>/home/oracle/.bash_profile; echo "export NLS_LANG=${{CHARACTERSET}}" >>/home/oracle/.bash_profile; echo "if [ \$USER = " oracle" ]; then if [ \$SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi">>/home/oracle/.bash_profile; source /home/oracle/.bash_profile; #下载安装包并解压 su - oracle <<EOF cd ${{INSTALL_PATH}}/oracle; wget http: //10.1.10.223:6680/p13390677_112040_Linux-x86-64_1of7.zip; wget http: //10.1.10.223:6680/p13390677_112040_Linux-x86-64_2of7.zip; wget http: //10.1.10.223:6680/p13390677_112040_Linux-x86-64_3of7.zip; unzip p13390677_112040_Linux-x86-64_1of7.zip; unzip p13390677_112040_Linux-x86-64_2of7.zip; unzip p13390677_112040_Linux-x86-64_3of7.zip; exit; EOF #修改db_install.rsp文件 sed -i "s/^oracle.install.option=/oracle.install.option=INSTALL_DB_SWONLY/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^ORACLE_HOSTNAME=/ORACLE_HOSTNAME= oracledb/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^UNIX_GROUP_NAME=/UNIX_GROUP_NAME=oinstall/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^INVENTORY_LOCATION=/INVENTORY_LOCATION=\${{INSTALL_PATH}}\/oracle\/inventory/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^SELECTED_LANGUAGES=en/SELECTED_LANGUAGES=en,zh_CN/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^ORACLE_HOME=/ORACLE_HOME=\${{INSTALL_PATH}}\/oracle\/11g/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^ORACLE_BASE=/ORACLE_BASE=\${{INSTALL_PATH}}\/oracle/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^oracle.install.db.InstallEdition=/oracle.install.db.InstallEdition=EE/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^oracle.install.db.DBA_GROUP=/oracle.install.db.DBA_GROUP=dba/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^oracle.install.db.OPER_GROUP=/oracle.install.db.OPER_GROUP=oper/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i "s/^DECLINE_SECURITY_UPDATES=/DECLINE_SECURITY_UPDATES=true/g" ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i 's/^oracle.install.db.BACKUPDBA_GROUP=/oracle.install.db.BACKUPDBA_GROUP=dba/g' ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i 's/^oracle.install.db.DGDBA_GROUP=/oracle.install.db.DGDBA_GROUP=dba/g' ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i 's/^oracle.install.db.KMDBA_GROUP=/oracle.install.db.KMDBA_GROUP=dba/g' ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i 's/^oracle.install.db.config.starterdb.globalDBName=/oracle.install.db.config.starterdb.globalDBName=${{ORACLE_SID}}/g' ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i 's/^oracle.install.db.config.starterdb.SID=/oracle.install.db.config.starterdb.SID=${{ORACLE_SID}}/g' ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i 's/^oracle.install.db.config.starterdb.type=/oracle.install.db.config.starterdb.type=GENERAL_PURPOSE/g' ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i 's/^oracle.install.db.config.starterdb.password.ALL=/oracle.install.db.config.starterdb.password.ALL=${{password}}/g' ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp sed -i 's/^oracle.install.db.config.starterdb.memoryLimit=/oracle.install.db.config.starterdb.memoryLimit=81920/g' ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp #开始安装 su - oracle <<EOF cd ${{INSTALL_PATH}}/oracle/database; ./runInstaller -silent -responseFile ${{INSTALL_PATH}}/oracle/database/response/db_install.rsp -ignorePrereq; EOF sleep 500 echo "start bash orainstRoot.sh" sh ${{INSTALL_PATH}}/oracle/inventory/orainstRoot.sh echo "start bash root.sh" sh ${{INSTALL_PATH}}/oracle/11g/root.sh #安装netca.rsp su - oracle <<EOF cd ${{INSTALL_PATH}}/oracle/11g/bin/; ./netca /silent /responseFile ${{INSTALL_PATH}}/oracle/database/response/netca.rsp; EOF #添加数据库实例,修改dbca.rsp文件 sed -i '78s/.*/GDBNAME= "${{ORACLE_SID}}"/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '170s/.*/SID = "${{ORACLE_SID}}"/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '211s/.*/SYSPASSWORD = "${{password}}"/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '221s/.*/SYSTEMPASSWORD = "${{password}}"/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '252s/.*/SYSMANPASSWORD = "${{password}}"/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '262s/.*/DBSNMPPASSWORD = "${{password}}"/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '360s/.*/DATAFILEDESTINATION=\${{INSTALL_PATH}}\/oracle\/oradata/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '370s/.*/RECOVERYAREADESTINATION=\${{INSTALL_PATH}}\/oracle\/flash_recovery_area/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '418s/.*/CHARACTERSET= "${{CHARACTERSET}}"/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp sed -i '553s/.*/TOTALMEMORY= "3276"/' ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp #值设置为物理内存的 60 % #执行数据库实例安装 su - oracle << EOF cd ${{INSTALL_PATH}}/oracle/11g/bin/; dbca -silent -responseFile ${{INSTALL_PATH}}/oracle/database/response/dbca.rsp; EOF #设置开机启动 sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/g' ${{INSTALL_PATH}}/oracle/11g/bin/dbstart sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/g' ${{INSTALL_PATH}}/oracle/11g/bin/dbshut #配置service开机启动 sed -i 's/${{ORACLE_SID}}:\${{INSTALL_PATH}}\/oracle\/11g\:N/${{ORACLE_SID}}:\${{INSTALL_PATH}}\/oracle\/11g\:Y/g' /etc/oratab echo "su - oracle -c \"${{INSTALL_PATH}}/oracle/11g/bin/lsnrctl start\" " >>/etc/rc.d/rc.local echo "su - oracle -c \"${{INSTALL_PATH}}/oracle/11g/bin/dbstart\" " >>/etc/rc.d/rc.local touch /var/lock/subsys/oracle #新建文件/etc/rc.d/init.d/oracle cat >> /etc/rc.d/init.d/oracle << EOF #! /bin/bash # oracle: Start/Stop Oracle Database 11g R2 # # chkconfig: 345 90 10 # description: The Oracle Database is an Object-Relational Database Management System. # # processname: oracle . /etc/rc.d/init.d/functions LOCKFILE=/var/lock/subsys/oracle ORACLE_HOME=${{INSTALL_PATH}}/oracle/11g ORACLE_USER=oracle case "$1" in 'start' ) if [ -f $LOCKFILE ]; then echo $ 0 already running. exit 1 fi echo -n $ "Starting Oracle Database:" su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start" su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole" touch $LOCKFILE ;; 'stop' ) if [ ! -f $LOCKFILE ]; then echo $ 0 already stopping. exit 1 fi echo -n $ "Stopping Oracle Database:" su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop" su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut" su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole" rm -f $LOCKFILE ;; 'restart' ) $ 0 stop $ 0 start ;; 'status' ) if [ -f $LOCKFILE ]; then echo $ 0 started. else echo $ 0 stopped. fi ;; *) echo "Usage: $0 [start|stop|status]" exit 1 esac exit 0 EOF #给/etc/init.d/oracle添加执行权限 chmod 755 /etc/init.d/oracle chkconfig oracle on #给启动文件加权限 cd ${{INSTALL_PATH}}/oracle/11g/bin/ chmod 6751 oracle cd /var/tmp chown -R oracle:oinstall .oracle #查看状态和进程 netstat -tulnp |grep 1521 ps -ef |grep ora_ |grep -v grep su - oracle << EOF cd ${{INSTALL_PATH}}/oracle/11g/bin/; ./lsnrctl status; exit; EOF if [ $? -eq 0 ];then su - oracle << EOF ${{INSTALL_PATH}}/oracle/11g/bin/sqlplus / as sysdba << EOF ALTER SYSTEM SET db_create_file_dest = '${{INSTALL_PATH}}/oracle/oradata/${{ORACLE_SID}}' ; CREATE TEMPORARY TABLESPACE ${{TEMP_TABLE_SPACE}}; CREATE TABLESPACE ${{TABLE_SPACE}}; CREATE USER ${{DB_USER}} IDENTIFIED BY ${{DB_USER_PASSWORD}}; GRANT CONNECT,RESOURCE,DBA to ${{DB_USER}}; quit; EOF EOF #oracle安装完成 echo "oracle installed succeeful!" fi |