背景:经常需要安装Oracle数据库服务器,系统为RedHat 6.3
问题:开始安装Oracle前需要修改诸多配置文件,创建帐号、用户组等准备工作,也要检查依赖的包是否齐全,每次都有重复一遍
解决:
1、检查hostname,修改/etc/hosts文件
1 hostname=`hostname` 2 hostip=`hostname --all-ip-address` 3 4 if [ $hostname = "localhost.localdomain" ] 5 then 6 echo "current hostname is localhost.localdomain, please rename in file /etc/sysconfig/network, then restart computer" 7 exit 8 else 9 if [ `grep ${hostname} /etc/hosts | wc -l` -gt 0 ] 10 then 11 echo "hostname ${hostname} is exist in file /etc/hosts" 12 else 13 cp /etc/hosts /etc/hosts.bak 14 echo ${hostip}" "${hostname} >> /etc/hosts 15 fi 16 fi
2、创建oinstall,dba用户组
1 if [ `grep "^oinstall:" /etc/group | wc -l` -gt 0 ] 2 then 3 echo "oinstall group is exist" 4 else 5 groupadd oinstall 6 echo "oinstall group is created" 7 fi 8 if [ `grep "^dba:" /etc/group | wc -l` -gt 0 ] 9 then 10 echo "dba group is exist" 11 else 12 groupadd dba 13 echo "dba group is created" 14 fi
3、创建oracle用户,加入oinstall和dba用户组
1 if [ `grep "^oracle:" /etc/passwd | wc -l` -gt 0 ] 2 then 3 echo "oracle user is exist" 4 else 5 useradd oracle -g oinstall -G dba 6 echo "oracle user is created" 7 echo -e "password\password" | passwd oracle 8 echo "oracle password is updated" 9 fi
4、修改/etc/sysctl.conf内核参数并生效
1 if [ `grep "^net.core.wmem_max" /etc/sysctl.conf | wc -l` -gt 0 ] 2 then 3 echo "/etc/sysctl.conf file is modified" 4 else 5 cp /etc/sysctl.conf /etc/sysctl.conf.bak 6 echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf 7 echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf 8 echo "fs.file-max = 6815744" >> /etc/sysctl.conf 9 echo "kernel.shmall = 2097152" >> /etc/sysctl.conf 10 echo "kernel.shmmax = 536870912" >> /etc/sysctl.conf 11 echo "kernel.shmmni = 4096" >> /etc/sysctl.conf 12 echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf 13 echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf 14 echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf 15 echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf 16 echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf 17 echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf 18 sysctl -p 19 fi
5、修改/etc/security/limits.conf配置文件
1 if [ `grep "^oracle soft nproc 2047" /etc/security/limits.conf | wc -l` -gt 0 ] 2 then 3 echo "/etc/security/limits.conf file is modified" 4 else 5 cp /etc/security/limits.conf /etc/security/limits.conf.bak 6 echo "oracle soft nproc 2047" >> /etc/security/limits.conf 7 echo "oracle hard nproc 16384" >> /etc/security/limits.conf 8 echo "oracle soft nofile 1024" >> /etc/security/limits.conf 9 echo "oracle hard nofile 65536" >> /etc/security/limits.conf 10 fi
6、修改/etc/pam.d/login配置文件
1 if [ `grep "^session required pam_limits.so" /etc/pam.d/login | wc -l` -gt 0 ] 2 then 3 echo "/etc/pam.d/login file is modified" 4 else 5 cp /etc/pam.d/login /etc/pam.d/login.bak 6 echo "session required pam_limits.so" >> /etc/security/limits.conf 7 fi
7、创建ORACLE_BASE ORACLE_HOME TMP目录,并赋相应权限
1 if [ ! -d "/u01/app/oracle/product/11.2.0/db_1" ] 2 then 3 mkdir -p /u01/app/oracle/product/11.2.0/db_1 4 chown -R oracle:oinstall /u01/ 5 chmod -R 775 /u01/ 6 mkdir /tmp/oracle 7 chown -R oracle:oinstall /tmp/oracle 8 chmod -R 775 /tmp/oracle 9 else 10 echo "directory /u01/app/oracle/product/11.2.0/db_1 is exist" 11 fi
8、修改oracle用户环境变量配置文件.bash_profile
1 if [ `grep "export ORACLE_TERM=xterm" /home/oracle/.bash_profile | wc -l` -gt 0 ] 2 then 3 echo "variable ORACLE_TERM=xterm is exist" 4 else 5 cp /home/oracle/.bash_profile /home/oracle/.bash_profile.bak 6 echo "#Oracle" >> /home/oracle/.bash_profile 7 echo "umask 022" >> /home/oracle/.bash_profile 8 echo "TMP=/tmp; export TMP" >> /home/oracle/.bash_profile 9 echo "TMPDIR=$TMP; export TMPDIR" >> /home/oracle/.bash_profile 10 echo "export ORACLE_BASE=/u01/app/oracle" >> /home/oracle/.bash_profile 11 echo "export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1" >> /home/oracle/.bash_profile 12 echo "export PATH=$ORACLE_HOME/Apache/perl/bin:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH" >> /home/oracle/.bash_profile 13 echo "export ORACLE_OWNER=oracle" >> /home/oracle/.bash_profile 14 echo "export ORACLE_SID=orcl" >> /home/oracle/.bash_profile 15 echo "export ORACLE_TERM=xterm" >> /home/oracle/.bash_profile 16 echo "unset USERNAME" >> /home/oracle/.bash_profile 17 fi
9、检查安装Oracle依赖的15个安装包,版本未要求完全一致或更新;若yum安装出现问题,参考
1 packages="binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh " 2 packages=${packages}"libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat" 3 versions=("2.20" "1.10" "3.2" "4.4" "4.4" "2.12" "2.12" "5.2" "4.4" "4.4" "4.4" "0.3" "0.3" "3.81" "9.0") 4 5 i=0 6 for package in $packages 7 do 8 packageversion=${package}"-"${versions[i]} 9 if [ `rpm -qa | grep $packageversion | wc -l` -ne 0 ] 10 then 11 echo ${i}": Exists the package:$packageversion" 12 else 13 if [ `rpm -qa | grep $package | wc -l` -ne 0 ] 14 then 15 installed=`rpm -qa | grep $package` 16 echo ${i}": Not exist the package like:$packageversion" 17 echo "But exists other versions:" 18 echo "$installed" 19 else 20 echo ${i}": Installing the package:$package" 21 yum install $package 22 fi 23 fi 24 i=$(($i + 1)) 25 done
原文:http://www.cnblogs.com/abelard/p/4873439.html