#/bin/sh
set -x
phase1_create_user_and_env(){
groupadd oinstall
groupadd dba
useradd oracle
usermod -g oinstall -G dba -c "Oracle Software Owner" -d /home/oracle oracle
cat > /home/oracle/.bash_profile <<'EOO'
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/X11R6/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/jdk/jre/lib/i386
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/jdk/jre/lib/i386/server
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/rdbms/lib
export CLASS_PATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib
export CLASS_PATH=$CLASS_PATH:$ORACLE_HOME/rdbms/jlib
export CLASS_PATH=$CLASS_PATH:$ORACLE_HOME/network/jlib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=american_america.AL32UTF8
export ORACLE_TERM=xterm
export EDITOR=vi
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=en_US
EOO
}
phase2_modfiy_release_and_dir(){
echo "Red Hat Enterprise Linux Server release 4 (Santiago)" > /etc/system-release
echo "Red Hat Enterprise Linux Server release 4 (Santiago)" > /etc/redhat-release
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chown oracle:oinstall /home/oracle
}
####3
####limit the oracle process.
phase3_config_os_limit_file(){
#1) /etc/security/limits.conf
cat > /etc/security/limits.conf <<ESH
oracle soft nproc 20480
oracle hard nproc 20480
oracle soft nofile 20480
oracle hard nofile 20480
ESH
#2) /etc/pam.d/login
tag_pam=`grep "#Append_login_mod" /etc/pam.d/login | tr -d [:blank:]`
if [ "$tag_pam" == "#Append_login_mod" ]; then
echo "................./etc/pam.d/login was already modfied."
else
cat >> /etc/pam.d/login <<EPAM
#Append_login_mod
session required /lib/security/pam_limits.so
session required pam_limits.so
EPAM
fi
#3) /etc/profile
tag_pro=`grep "#Append_user_limit" /etc/profile | tr -d [:blank:]`
if [ "$tag_pro" == "#Append_user_limit" ]; then
echo "............/etc/profile was already modified."
else
cat >> /etc/profile <<'EPRO'
#Append_user_limit
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
EPRO
fi
#4) /etc/sysctl.conf
cat > /etc/sysctl.conf <<ESYS
net.ipv4.ip_forward = 0
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
fs.file-max = 65536
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmni = 4096
####Note:
####"kernel.shmmax" parameter need equal to the value of memory size!!!!!!!
kernel.shmmax = 536870912
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
net.ipv4.ip_local_port_range = 1024 65000
ESYS
sysctl -p
xhost +
}
phase4_install_os_rpm(){
set +x
tag_iso=default
until [ 1<>1 ]
do
case $tag_iso in
y) break
;;
n) exit 0
;;
*)read -p 'Are you sure mount the iso to directory "/mnt"? [y/n]' tag_iso
;;
esac
done
if [ "$tag_iso" == "y" ]; then
set -x
mount /dev/cdrom /mnt
cd /mnt/Server
xhost +
rpm -ivh libXau*.i386.rpm
rpm -ivh libXdmcp*.i386.rpm
rpm -ivh libX11*.i386.rpm
rpm -ivh libICE*.i386.rpm
rpm -ivh libSM*.i386.rpm
rpm -ivh libXext*.i386.rpm
rpm -ivh libXt*.i386.rpm
rpm -ivh libXp*.i386.rpm
rpm -ivh libaio*.i386.rpm
rpm -ivh libgcc*.i386.rpm
rpm -ivh compat-libstdc*.i386.rpm
rpm -ivh binutils*.i386.rpm
rpm -ivh glibc*.i386.rpm
yum -y localinstall make*
yum -y localinstall glibc*
yum -y localinstall compat-libstdc*
yum -y localinstall compat-*
yum -y install libXp*
yum -y install libXt*
yum -y install libXtst*
yum -y install make*
yum -y install gcc*
yum -y install binutils*
yum -y install libaio*
yum -y install compat-libstdc*
yum -y install "*fonts*"
yum -y groupinstall "Chinese Support"
rpm -q gcc make binutils openmotif
fi
}
case "$1" in
phase1) phase1_create_user_and_env
;;
phase2) phase2_modfiy_release_and_dir
;;
phase3) phase3_config_os_limit_file
;;
phase4) phase4_install_os_rpm
;;
*)
set +x
echo "
Please input {phase1|phase2|phase3|phase4}
phase1 : phase1_create_user_and_env
phase2 : phase2_modfiy_release_and_dir
phase3 : phase3_config_os_limit_file
phase4 : phase4_install_os_rpm
"
;;
esac
转载于:https://blog.51cto.com/majesty/807142