#/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