问题:经常需要安装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 "passwordpassword" | passwd oracle
8 echo "oracle password is updated"
9 fi
View Code
4、修改/etc/sysctl.conf内核参数并生效
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配置文件
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 "" >> /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安装源
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
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!