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

问题:经常需要安装Oracle数据库服务器,系统为RedHat 6.3。开始安装Oracle前需要修改诸多配置文件,创建帐号、用户组等准备工作,也要检查依赖的包是否齐全,每次都要重复一遍

解决:

1、检查hostname,修改/etc/hosts文件
自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

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用户组
自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

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用户组
自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

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 "passwordpassword" | passwd oracle
8     echo "oracle password is updated"
9 fi

View Code
4、修改/etc/sysctl.conf内核参数并生效
自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

1 # kernel.shmall取总内存的页数(每页4K),kernel.shmmax取内存的一半
 2 if [ `grep "^net.core.wmem_max" /etc/sysctl.conf | wc -l` -gt 0 ]
 3 then
 4     echo "/etc/sysctl.conf file is modified"
 5 else
 6     cp /etc/sysctl.conf  /etc/sysctl.conf.bak
 7     sed -i "s/kernel.shmall/# kernel.shmall/g"  /etc/sysctl.conf
 8     sed -i "s/kernel.shmmax/# kernel.shmmax/g"  /etc/sysctl.conf
 9     
10     total=`awk '/MemTotal/{print $2}'  /proc/meminfo`
11     shmall=$(($total / 4))
12     shmmax=$(($total * 512))    
13 
14     echo ""  >> /etc/sysctl.conf
15     echo "# Oracle11g"  >> /etc/sysctl.conf
16     echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
17     echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
18     echo "fs.file-max = 6815744" >> /etc/sysctl.conf
19     echo "kernel.shmall = "${shmall} >> /etc/sysctl.conf
20     echo "kernel.shmmax = "${shmmax} >> /etc/sysctl.conf
21     echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
22     echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
23     echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
24     echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
25     echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
26     echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
27     echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf
28     sysctl -p
29 fi

View Code

5、修改/etc/security/limits.conf配置文件
自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

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配置文件
自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

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目录,并赋相应权限
自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

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
自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

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 "" >> /home/oracle/.bash_profile
 7     echo "#Oracle" >> /home/oracle/.bash_profile
 8     echo "umask 022" >> /home/oracle/.bash_profile
 9     echo "TMP=/tmp; export TMP" >> /home/oracle/.bash_profile
10     echo "TMPDIR=$TMP; export TMPDIR" >> /home/oracle/.bash_profile
11     echo "export ORACLE_BASE=/u01/app/oracle" >> /home/oracle/.bash_profile
12     echo "export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1" >> /home/oracle/.bash_profile
13     echo "export PATH=$ORACLE_HOME/Apache/perl/bin:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH" >> /home/oracle/.bash_profile
14     echo "export ORACLE_OWNER=oracle" >> /home/oracle/.bash_profile
15     echo "export ORACLE_SID=orcl" >> /home/oracle/.bash_profile
16     echo "export ORACLE_TERM=xterm" >> /home/oracle/.bash_profile
17     echo "unset USERNAME" >> /home/oracle/.bash_profile
18 fi

View Code
9、检查安装Oracle依赖的15个安装包,版本未要求完全一致或更新;若yum安装出现问题,参考
Redhat配置iso文件为yum安装源自动配置Oracle 11g安装环境的shell脚本自动配置Oracle 11g安装环境的shell脚本

1 # Redhat 6.3的iso中没有pdksh,需要使用命令rpm -e ksh卸载系统默认安装的ksh,再使用命令rpm -i pdksh安装下载的包
 2 packages="binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel pdksh "
 3 packages=${packages}"libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat tigervnc tigervnc-server"
 4 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" "1.0" "1.0")
 5 
 6 i=0
 7 for package in $packages
 8 do
 9     packageversion=${package}"-"${versions[i]}
10     if [ `rpm -qa | grep $packageversion | wc -l` -ne 0 ] 
11     then
12        echo ${i}": Exists the package:$packageversion"
13     else
14        if [ `rpm -qa | grep $package | wc -l` -ne 0 ]
15        then
16            installed=`rpm -qa | grep $package`
17            echo ${i}": Not exist the package like:$packageversion"
18            echo "But exists other versions:"
19            echo "$installed"
20        else
21            echo ${i}": Installing the package:$package"
22            yum install $package
23        fi
24     fi
25     i=$(($i + 1))
26 done

View Code

原文链接: https://www.cnblogs.com/abelard/p/4873439.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/223018

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午11:56
下一篇 2023年2月13日 上午11:56

相关推荐