首页 > 数据库技术 > 详细

自动配置Oracle 11g安装环境的shell脚本

时间:2015-10-13 09:09:18      阅读:407      评论:0      收藏:0      [点我收藏+]

背景:经常需要安装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
View Code

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
View Code

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
View Code

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
View Code

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
View Code

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
View Code

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
View Code

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
View Code

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
View Code

 

自动配置Oracle 11g安装环境的shell脚本

原文:http://www.cnblogs.com/abelard/p/4873439.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!