Skip to content

Instantly share code, notes, and snippets.

@kevinbin
Created January 20, 2014 02:51
Show Gist options
  • Save kevinbin/8514110 to your computer and use it in GitHub Desktop.
Save kevinbin/8514110 to your computer and use it in GitHub Desktop.
oracle install script
#!/usr/bin/env bash
#set -x
#define oracle install dir
oracle_dir=""
if [ -z $oracle_dir ];then
echo "your need define oracle install PATH,please open this setting oracle_dir variables"
exit 0
fi
[ -d $oracle_dir/app ] || mkdir -p /$oracle_dir/app
[ -d $oracle_dir/tmp ] || mkdir -p /$oracle_dir/tmp
echo "Create dir $oracle_dir/app $oracle_dir/tmp"
#Echo text color
function cecho ()
{
export red='\E[31m\c'
export green='\E[32m\c'
export white='\E[37m\c'
message=$1
color=${2:-$white}
echo -e "$color"
echo -e "$message"
tput sgr0
echo -e "$white"
return
}
#Check rpm package installed
rpm -q ksh compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel | grep "not installed"
if [ $? -eq 0 ];then
exit 0
fi
#Add system variables in the /etc/sysctl.conf
cat /etc/sysctl.conf | grep "^kernel.shmall" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^kernel.shmall = .*/kernel.shmall = 2097152/' /etc/sysctl.conf
else
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^kernel.shmmax" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^kernel.shmmax = .*/kernel.shmmax = 2147483648/' /etc/sysctl.conf
else
echo "kernel.shmmax = 2147483648" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^kernel.shmmni" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^kernel.shmmni = .*/kernel.shmmni = 4096/' /etc/sysctl.conf
else
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^kernel.sem" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^kernel.sem = .*/kernel.sem = 250 32000 100 128/' /etc/sysctl.conf
else
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^fs.file-max" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^fs.file-max = .*/fs.file-max = 65536/' /etc/sysctl.conf
else
echo "fs.file-max = 65536" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^net.ipv4.ip_local_port_range" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^net.ipv4.ip_local_port_range = .*/net.ipv4.ip_local_port_range = 1024 65000/' /etc/sysctl.conf
else
echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^net.core.rmem_default" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^net.core.rmem_default = .*/net.core.rmem_default = 4194304/' /etc/sysctl.conf
else
echo "net.core.rmem_default = 4194304" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^net.core.rmem_max" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^net.core.rmem_max = .*/net.core.rmem_max = 4194304/' /etc/sysctl.conf
else
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^net.core.wmem_default" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^net.core.wmem_default = .*/net.core.wmem_default = 262144/' /etc/sysctl.conf
else
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
fi
cat /etc/sysctl.conf | grep "^net.core.wmem_max" > /dev/null
if [ $? -eq 0 ];then
sed -i 's/^net.core.wmem_max = .*/net.core.wmem_max = 262144/' /etc/sysctl.conf
else
echo "net.core.wmem_max = 262144" >> /etc/sysctl.conf
fi
/sbin/sysctl -p > /dev/null
if [ $? -ne 0 ];then
cecho "\c"
cecho "Edir sysctl.conf failure" $red
cecho "\c"
exit 0
else
cecho "\c"
cecho "Edir sysctl.conf sucessfull" $green
cecho "\c"
fi
#Create user and group
cat /etc/group | grep oinstall > /dev/null
if [ $? -ne 0 ];then
groupadd oinstall
cecho "\c"
cecho "add group oinstall" $green
cecho "\c"
fi
cat /etc/group | grep dba > /dev/null
if [ $? -ne 0 ];then
groupadd dba
cecho "\c"
cecho "add group dba" $green
cecho "\c"
fi
cat /etc/passwd | grep oracle > /dev/null
if [ $? -ne 0 ];then
useradd -g oinstall -G dba oracle > /dev/null 2>&1
cecho "\c"
cecho "add user oracle" $green
cecho "\c"
fi
passwd oracle
chown -R oracle:oinstall $oracle_dir/app/
chown -R oracle:oinstall $oracle_dir
chmod -R 775 $oracle_dir/app/
chmod a+wr $oracle_dir/tmp
#Add variables in the /etc/security/limits.conf
cat /etc/security/limits.conf | grep "oracle soft nproc 2047" > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "oracle soft nproc 2047" >> /etc/security/limits.conf
fi
cat /etc/security/limits.conf | grep "oracle hard nproc 16384" > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "oracle hard nproc 16384" >> /etc/security/limits.conf
fi
cat /etc/security/limits.conf | grep "oracle soft nofile 1024" > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "oracle soft nofile 1024" >> /etc/security/limits.conf
fi
cat /etc/security/limits.conf | grep "oracle hard nofile 65536" > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "oracle hard nofile 65536" >> /etc/security/limits.conf
fi
cat /etc/security/limits.conf | grep "nofile" > /dev/null
if [ $? -eq 0 ];then
cecho "\c"
cecho "Add variables in the /etc/security/limits.conf " $green
cecho "\c"
fi
#Add variables in the /etc/profile
cat /etc/profile | grep oracle > /dev/null
if [ $? -ne 0 ];then
echo " if [ \$USER = "oracle" ];then " >> /etc/profile
echo " if [ \$SHELL = "/bin/ksh" ];then" >> /etc/profile
echo " ulimit -p 16384" >> /etc/profile
echo " ulimit -p 65536" >> /etc/profile
echo " else" >> /etc/profile
echo " ulimit -u 16384 -n 65536" >> /etc/profile
echo "fi" >> /etc/profile
echo "fi" >> /etc/profile
fi
cecho "\c"
cecho "Add variables in the /etc/profile " $green
cecho "\c"
#Add env variables in the /home/oracle/.bash_profile
sed -i '2i\umask 022' /home/oracle/.bash_profile
sed -i "3i\TMP=$oracle_dir/tmp" /home/oracle/.bash_profile
sed -i "4i\TMPDIR=$oracle_dir/tmp" /home/oracle/.bash_profile
sed -i '5i\export TMP TMPDIR' /home/oracle/.bash_profile
echo "export ORACLE_BASE=$oracle_dir/app/oracle" >> /home/oracle/.bash_profile
echo "export ORACLE_HOME=\$ORACLE_BASE/product/11.1.0/db_1" >> /home/oracle/.bash_profile
echo "export ORA_CRS_HOME=\$ORACLE_BASE/crs" >> /home/oracle/.bash_profile
echo "export ORACLE_PATH=\$ORALCE_BASE/common/oracle/sql:.:\$ORACLE_HOME/rdbms/admin" >> /home/oracle/.bash_profile
echo "export ORACLE_SID=orcl" >> /home/oracle/.bash_profile #输入你的实例名
echo "export PATH=\$ORACLE_HOME/bin:\$ORA_CRS_HOME/bin:\${PATH}:\$HOME/bin" >> /home/oracle/.bash_profile
echo "export PATH=\${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin" >> /home/oracle/.bash_profile
echo "export PATH=\${PATH}:\$ORACLE-BASE/common/oracle/bin" >> /home/oracle/.bash_profile
echo "export ORACLE_TERM=xterm" >> /home/oracle/.bash_profile
echo "export TNS_ADMIN=\$ORACLE_HOME/network/admin" >> /home/oracle/.bash_profile
echo "export ORA_NLS10=\$ORACLE_HOME/nls/data" >> /home/oracle/.bash_profile
echo "export LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib:\$ORACLE_HOME/oracm/lib:/\$ORACLE_HOME/lib" >> /home/oracle/.bash_profile
echo "export LIBPATH=\$LIBPATH:\$ORA_CRS_HOME/lib:/\$ORACLE_HOME/lib" >> /home/oracle/.bash_profile
echo "export CLASSPATH=\${CLASSPATH}:\$ORACLE_HOME/rdbms/jlib:\$ORACLE_HOME/jlib:\$ORACLE_HOME/network/jlib:\$ORACLE_HOME/JRE" >> /home/oracle/.bash_profile
echo "export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK" >> /home/oracle/.bash_profile
echo "export LANG=AMERICAN_AMERICA.ZHS16GBK" >> /home/oracle/.bash_profile
echo "export DISPLAY=:0.0" >> /home/oracle/.bash_profile
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment