Centos6.3安装/运行Oracle11g的自动配置脚本

本文介绍如何在CentOS6.3上进行Oracle11g安装前的系统准备,包括系统内核参数调整、所需软件包安装及用户组设置等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此脚本将帮助您在安装 Oracle11g 到 CentOS 6.3(i386/x86_64) 系统之前,预设系统内核参数、安装Oracle11g系统所需要Linux系统包。

安装好CentOS 6.3(如服务器只做ORACLE数据库使用,建议以Mini desktop方式安装)后,以root用户登录系统,执行以下命令:
#sh Oracle11gPreInstaller.sh


按照脚本提示一步步完成安装前的预设工作,执行完后重新启动系统,以非root用户(脚本会提示你创建安装ORACLE11g所需的用户名)登录系统,转至ORACLE11g安装文件所在的目录,执行一下命令:
$./runInstaller -jreLoc /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre


之所以加上 jreLoc 参数,是因为ORACLE默认安装时用自带的jre会出现中文乱码,所以这里用系统的jre,保证安装界面为中文显示。32位系统经测试安装ORACLE11g时,会提示缺少 pdksh-5.2.14 这个包,直接忽略(系统已经安装了ksh-xxx 包)就可以正常安装,64位系统也会提示缺少大概7、8个包的样子,也直接忽略(这个是因为ORACLE11g 检查包的时候带上了版本号,而我们提前安装的包的版本号比它检查的要新)就可以。


安装完成后,默认防火墙只允许22端口(ssh),所以还需用 gedit 打开 /etc/sysconfig/iptables ,找到
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 这行,在其后添加:


-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1158 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5560 -j ACCEPT


这样外界就可以访问 ORACLE11g 相关服务了,如果需要开机自动登录、自动运行ORACLE相关服务,请以root用户运行一次以下脚本(再次启动服务器时ORACLE将自动运行):
#sh Oracle11gAutoStart.sh


#!/bin/bash
# Script Name: Oracle11gPreinstaller.sh
# Description: prepare works before install oracle 11g on CentOS 6.3(i386/x86_64)
# Author: xie tanghua - www.thxie.cn
# Create Date: 2012-09/05

MemTotal=$(($(grep MemTotal /proc/meminfo | sed 's/\w*:\s*\([0-9]*\).*/\1/')/1024))
SwapTotal=$(($(grep SwapTotal /proc/meminfo | sed 's/\w*:\s*\([0-9]*\).*/\1/')/1024))
ReqSwap=$((16*1024)) #16G
vshmmax=$(($MemTotal*1024*1024/2))
TmpSpace=$(df -k /tmp | grep -v 可用 | awk '{print int($4)}')
DiscSpace=$(df -k / | grep -v 可用 | awk '{print int($4)}')
euname=$(awk -F: '{print $1}' /etc/passwd)
uexists=n
f=4 #默认内核参数放大4倍

function pinfo(){
  if [ $1 -ge $2 ]; then
    echo -e "\e[1;32m[ OKay ]\e[0m"
  else
    echo -e "\e[1;31m[failed]\e[0m"
    echo "----------------------------------------"
    printf "%-20s %-20s\n" "$3" "$4"
    printf "%-20s %-20s\n" $1 $5
    echo "----------------------------------------"
  fi
}

function yumInstall(){
  if [ "$1" = "localInstall" ]; then
    yum --disablerepo=\* --enablerepo=c6-media -y install binutils-* compat-libstdc++-33-* elfutils-libelf-* elfutils-libelf-devel-* elfutils-libelf-devel-static-* gcc-* gcc-c++-* glibc-* glibc-common-* glibc-devel-* glibc-headers-* kernel-headers-* ksh-* libaio-* libaio-devel-* libgcc-* libgomp-* libstdc++-* libstdc++-devel-* make-* numactl-devel-* sysstat-* unixODBC-*
  else
    yum -y install binutils-* compat-libstdc++-33-* elfutils-libelf-* elfutils-libelf-devel-* elfutils-libelf-devel-static-* gcc-* gcc-c++-* glibc-* glibc-common-* glibc-devel-* glibc-headers-* kernel-headers-* ksh-* libaio-* libaio-devel-* libgcc-* libgomp-* libstdc++-* libstdc++-devel-* make-* numactl-devel-* sysstat-* unixODBC-*
  fi
}

echo -n "Checking Memeory Requirements:"
pinfo $MemTotal 1024 "Real Memory(MB)" "Required Memory(MB)" 1024+

# Checking Swap Space Requirements
if [ $MemTotal -lt $ReqSwap ]; then
  let ReqSwap=$MemTotal*2
fi
echo -n "Checking Swap Space Requirements:"
pinfo $SwapTotal $ReqSwap "Real Swap Space(MB)" "Required Swap Space(MB)" $ReqSwap

echo -n "Checking /tmp Space Requirements:"
pinfo $TmpSpace 1048576 "Real /tmp Space(MB)" "Required /tmp Space(MB)" 1024+

echo -n "Checking disc available Space Requirements:"
pinfo $DiscSpace 6291456 "Real Disc Space(MB)" "Required Disc Space(MB)" 6144+

echo "Checking Packages Requirements:"
echo "----------------------------------------"
rpm -q binutils-* compat-libstdc++-33-* elfutils-libelf-* elfutils-libelf-devel-* elfutils-libelf-devel-static-* gcc-* gcc-c++-* glibc-* glibc-common-* glibc-devel-* glibc-headers-* kernel-headers-* ksh-* libaio-* libaio-devel-* libgcc-* libgomp-* libstdc++-* libstdc++-devel-* make-* numactl-devel-* sysstat-* unixODBC-* unixODBC-devel-* | sed 's/\(package .* is not installed\)/[\1]/'
echo "----------------------------------------"
echo -e "\e[1;31m"
echo "Please select install mode:"
echo "1:Install from cd/dvd;"
echo "2:Install from the path which include centos media(xxx.iso);"
echo "3:Install from network;"
read im
echo -e "\e[0m"
yum clean all
case $im in
1) typeset -u sf # convert lower to upper 
   read -p "Please insert CentOS DVD and input 'ok'(case-insensitive).If you want install Packages directly from network repository then press enter:" sf
   if [ $sf = OK ]; then
     echo -e "\e[1;32mStarting install/update required Packages from local DVDs:\e[0m"
     sed -i "s/^\s*\(file:\/\/\/\w*\/\w*\/\)//g" /etc/yum.repos.d/CentOS-Media.repo
     [[ -d $(grep /dev/sr0 /proc/mounts | sed "s/\/dev\/sr0 \(\/media\/\w*\).*/\1/") ]] && umount /media/*
     [[ ! -d /media/CentOS ]] && mkdir /media/CentOS
     mount -o ro /dev/cdrom /media/CentOS
     yumInstall "localInstall"
   else
     echo -e "\e[1;32mStarting install/update required Packages from network repository:\e[0m"
     yumInstall
   fi
;;
2) sed -i "s/^\s*\(file:\/\/\/\w*\/\w*\/\)//g" /etc/yum.repos.d/CentOS-Media.repo
   [[ -d $(grep /dev/sr0 /proc/mounts | sed "s/\/dev\/sr0 \(\/media\/\w*\).*/\1/") ]] && umount /media/*
   [[ ! -d /media/CentOS ]] && mkdir /media/CentOS
   read -p "Please input CentOS media(xxx.iso) path:" mp
   mount -o loop $mp /media/CentOS
   yumInstall "localInstall"
;;
3) echo -e "\e[1;32mStarting install/update required Packages from network repository:\e[0m"
   yumInstall
;;
esac
echo "Creating Required Operating System Groups and Users:"
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
echo "The Oracle Inventory group and OSDBA group created successful!"
read -p "Please input the oracle username that you want to create/use:" oname
for i in $euname
  do
    if [ $oname = $i ]; then
      uexists=y
      break
    fi
  done
if [ $uexists = y ]; then
  /usr/sbin/usermod -g oinstall -G dba $oname
else
  /usr/sbin/useradd -g oinstall -G dba $oname
fi
read -p "Please input y to modify the preuser password,input n is implied password is not changed." a
if [ $a = y ]; then
  passwd $oname
fi

cat >>/etc/sysctl.conf<<EOF

kernel.shmmni = $(($f*4096))
kernel.sem = $(($f*250)) $(($f*32000)) $(($f*100)) $(($f*128))
fs.aio-max-nr = 1048576
fs.file-max = $(($f*6815744))
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = $(($f*262144))
net.core.rmem_max = $(($f*4194304))
net.core.wmem_default = $(($f*262144))
net.core.wmem_max = $(($f*1048576))

EOF

[ $vshmmax -ge 4294967295 ] && let vshmmax=4294967295
sed -i "s/\(kernel\.shmmax = \)\([0-9]*\)/\1$vshmmax/" /etc/sysctl.conf
/sbin/sysctl -p >/dev/null

cat >>/etc/security/limits.conf<<EOF

$oname           soft    nproc           2048
$oname           hard    nproc           16384
$oname           soft    nofile          1024
$oname           hard    nofile          65536
$oname           soft    stack           10240

EOF

read -p "Please input the Oracle installation path:" opath
[ -d $opath ] || mkdir -p $opath
chown -R $oname:oinstall $opath
chmod -R 775 $opath
read -p "Please input oracle sid:" sid
# su - $oname
# . ./.bash_profile
cat >>/home/$oname/.bash_profile<<EOF

ORACLE_BASE=$opath
ORACLE_SID=$sid
TMP=/tmp
TMPDIR=/tmp
NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
export ORACLE_BASE ORACLE_SID TMP TMPDIR NLS_DATE_FORMAT
umask 022

EOF

cat >>/etc/profile<<EOF
ORACLE_OWNER=$oname
export ORACLE_OWNER
EOF

echo "Please restart server, login as $oname and start install Oracle."


#!/bin/bash
# Script Name: Oracle11gAutoStart.sh
# Description: AutoStart oracle 11g on CentOS 6.3(i386/x86_64)
# Author: xie tanghua - www.thxie.cn
# Create Date: 2012-09/05

ORACLE_HOME=$(grep dbhome /etc/oratab | awk -F: '{print $2}')
echo -n "Change /etc/oratab settings:"
sed -i "s/\(.*\):\(N\)/\1:Y/" /etc/oratab
if [ $? -eq 0 ] ; then
  echo -e "\e[1;32m[ OKay ]\e[0m"
else
  echo -e "\e[1;31m[failed]\e[0m"
fi
cat >>/etc/profile<<EOF
ORACLE_HOME=$ORACLE_HOME
export ORACLE_HOME
EOF
# auto login
cat >/etc/gdm/custom.conf<<EOF
# GDM configuration storage
[daemon]
AutomaticLoginEnable=true
AutomaticLogin=$ORACLE_OWNER
TimedLoginEnable=true
TimedLogin=$ORACLE_OWNER
TimedLoginDelay=10
[security]
AllowRoot=false
[xdmcp]
[greeter]
[chooser]
[debug]
EOF
# auto start oracle 11g
cat >>/home/$ORACLE_OWNER/.bash_profile<<EOF
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
$ORACLE_HOME/bin/emctl start dbconsole
EOF
echo "All jobs have done,please restart server."


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值