oracle 11g r2 一键配置脚本

最近工作需要安装oracle 11g R2在阿里云ECS上,因此编写了一个脚本来完成图形化安装界面之前的准备工作,这样节省时间,shell如下:

#!/bin/bash
SYSCTL="/etc/sysctl.conf"
LIMITS="/etc/security/limits.conf"
PAM="/etc/pam.d/login"
PROFILE="/etc/profile"
BASH_PROFILE="/home/oracle/.bash_profile"
oracle_passwd='oracle'
SID=orcl
lang="AMERICAN_AMERICA.AL32UTF8"
#ora_install_dir=/u01
#ora_database_dir=/u02
ORACLE_BASE=$ora_install_dir/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db

#初始化检查,OS版本、内存、磁盘情况
check_init()
{
OS=`cat/etc/redhat-release`
MEM=`free-m|grep'Mem'|awk'{print$2}'`
CPUS=`grep-i"processor"/proc/cpuinfo|wc-l`
echo"系统版本:$OS"
echo"内存:${MEM}M"
echo"CPU核数:$CPUS"
}

#检查swap空间是否分配
check_swap()
{
swap_check="`grep-i'swaptotal'/proc/meminfo|awk'{print$2}'`"
if[[$swap_check="0"]];then
echo"swapspaceNotset,pleasecreateforswapspace!!!"
exit1
fi
}

#检查是否root用户执行脚本
isroot()
{
if[$USER!="root"];then
echo-e"\n\e[1;31mTheusermustberoot,andyouuseris$USER,pleasesutoroot.\e[0m"
exit4
fi
}

#创建oracle用户
oracle_useradd()
{
if[[`grep"oracle"/etc/passwd`!=""]];then
echo-e"\e[1;31mUseroracleexits,deleteandcreateoracle!\e[0m"&&sleep2
userdel-rforacle

fi
if[[`grep"oinstall"/etc/group`=""]];then
groupaddoinstall
fi
if[[`grep"dba"/etc/group`=""]];then
groupadddba
fi
useraddoracle-goinstall-Gdba&&echo$oracle_passwd|passwdoracle--stdin
if[$?-eq0];then
echo-e"\n\e[1;32moracle'spasswordupdatesuccessfully---OK!\e[0m"
else
echo-e"\n\e[1;31moracle'spasswordsetfailed.---NO!\e[0m"
fi
}

#创建oracle使用的目录
oracle_dirs()
{
read-p"pleaseinputoracleinstalldirname,default/u01":ora_install_dir
read-p"pleaseinputoracledatabasedirname,default/u02":ora_database_dir
mkdir-p$ora_install_dir/app/oracle/{oraInventory,product/11.2.0/db}
mkdir-p"$ora_database_dir/oradata/oradb"
chown-Roracle:oinstall$ora_install_dir
chown-Roracle.oinstall$ora_database_dir
chmod-R755$ora_install_dir$ora_database_dir
if[$?==0];then
echo"$ora_install_dircreatesucessfully!"
echo"$ora_database_dircreatesucessfully!"
else
echo"$ora_install_diror$ora_database_dircreateFailed,pleasecheck!"
exit2
fi
}
#配置profile文件
oracle_profile()
{
if[-f"/etc/profile.bak"];then
rm-rf/etc/profile>/dev/null
	cp/etc/profile.bak/etc/profile
cat<<EOF>>$PROFILE
if[$USER="oracle"];then
if[$SHELL="/bin/ksh"];then
ulimit-p16384
ulimit-n65536
else
	ulimit-u16384-n65536
fi
fi
EOF
else
cp/etc/profile/etc/profile.bak
cat<<EOF>>$PROFILE
if[$USER="oracle"];then
if[$SHELL="/bin/ksh"];then
ulimit-p16384
ulimit-n65536
else
ulimit-u16384-n65536
fi
fi
EOF
fi
if[$?-eq0];then
echo-e"\n\e[1;32m$PROFILEupdatesuccessfully...OK!\e[0m"
fi
}
#配置.bash_profile()
oracle_bash()
{
if[-f"/home/oracle/.bash_profile.bak"];then
rm-rf$BASH_PROFILE>/dev/null
cp/home/oracle/.bash_profile.bak$BASH_PROFILE
cat<<EOF>>$BASH_PROFILE
exportORACLE_BASE=$ORACLE_BASE
exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/db
exportORACLE_SID=$SID
exportORACLE_TERM=xterm
exportORACLE_OWNER=oracle
exportTNS_ADMIN=$ORACLE_HOME/network/admin
exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/lib
exportLIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/lib
exportPATH=$PATH:/sbin:/usr/bin:/usr/sbin:$JAVA_HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/lib:$HOME/bin:$ORACLE_HOME/OPatch:.
umask022
exportNLS_LANG=$lang
EOF
else
cp$BASH_PROFILE/home/oracle/.bash_profile.bak
cat<<EOF>>$BASH_PROFILE
exportORACLE_BASE=$ORACLE_BASE
exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/db
exportORACLE_SID=$SID
exportORACLE_TERM=xterm
exportORACLE_OWNER=oracle
exportTNS_ADMIN=$ORACLE_HOME/network/admin
exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/lib
exportLIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/lib
exportPATH=$PATH:/sbin:/usr/bin:/usr/sbin:$JAVA_HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/lib:$HOME/bin:$ORACLE_HOME/OPatch:.
umask022
exportNLS_LANG=$lang
EOF
fi
if[$?-eq0];then
echo-e"\n\e[1;32m$BASH_PROFILEupdatesuccessfully...OK!\e[0m"
fi
}
#设置limit资源限制
oracle_limit()
{
if[-f"/etc/security/limits.conf.bak"];then
rm-rf$LIMITS>/dev/null
cp/etc/security/limits.conf.bak$LIMITS
cat<<EOF>>$LIMITS
oraclesoftnproc8192
oraclehardnproc16384
oraclesoftnofile8192
oraclehardnofile65536
EOF
else
cp$LIMITS/etc/security/limits.conf.bak
cat<<EOF>>$LIMITS
oraclesoftnproc8192
oraclehardnproc16384
oraclesoftnofile8192
oraclehardnofile65536
EOF
fi
if[$?-eq0];then
echo-e"\n\e[1;32m$LIMITSupdatesucessfully...OK!\e[0m"
fi
}
#设置内核参数
oracle_kernal()
{
if[-f/etc/sysctl.conf.bak];then
rm-rf$SYSCTL>/dev/null
cp/etc/sysctl.conf.bak$SYSCTL
sed-i's/kernel.msgmnb.*/#kernel.msgmnb=65536/g'$SYSCTL
sed-i's/kernel.msgmax.*/#kernel.msgmax=65536/g'$SYSCTL
sed-i's/kernel.shmmax.*/#kernel.shmmax=68719476736/g'$SYSCTL
sed-i's/kernel.shmall.*/#kernel.shmall=4294967296/g'$SYSCTL
cat<<EOF>>$SYSCTL
kernel.shmall=2097152
kernel.shmmax=2147483648
kernel.shmmni=40960
kernel.sem=25032000100128
kernel.msgmni=4096
kernel.msgmax=65536
kernel.msgmnb=84000
fs.file-max=6815744
net.ipv4.ip_local_port_range=900065500
fs.file-max=6815744
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr=1048576
net.ipv4.tcp_wmem=262144262144262144
net.ipv4.tcp_rmem=419430441943044194304
EOF
else
cp$SYSCTL/etc/sysctl.conf.bak
sed-i's/kernel.msgmnb.*/#kernel.msgmnb=65536/g'$SYSCTL
sed-i's/kernel.msgmax.*/#kernel.msgmax=65536/g'$SYSCTL
sed-i's/kernel.shmmax.*/#kernel.shmmax=68719476736/g'$SYSCTL
sed-i's/kernel.shmall.*/#kernel.shmall=4294967296/g'$SYSCTL
cat<<EOF>>$SYSCTL
kernel.shmall=2097152
kernel.shmmax=2147483648
kernel.shmmni=40960
kernel.sem=25032000100128
kernel.msgmni=4096
kernel.msgmax=65536
kernel.msgmnb=84000
fs.file-max=6815744
net.ipv4.ip_local_port_range=900065500
fs.file-max=6815744
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr=1048576
net.ipv4.tcp_wmem=262144262144262144
net.ipv4.tcp_rmem=419430441943044194304
EOF
fi
if[$?-eq0];then
echo-e"\n\e[1;32m$SYSCTLupdatesucessfully...OK!\e[0m"
fi
}
#关闭iptablesandselinux
iptables_selinux()
{
serviceiptablesstop&&chkconfigiptablesoff
setenforce0&>/dev/null
sed-i'/SELINUX/s/enforcing/disabled/;/SELINUX/s/permissive/disabled/'/etc/selinux/config
}
#下载oracle安装文件
get_oracle()
{
wgethttp://10.139.96.23:8080/p13390677_112040_Linux-x86-64_1of7.zip-P/home/oracle&&wgethttp://10.139.96.23:8080/p13390677_112040_Linux-x86-64_2of7.zip-P/home/oracle
}

#oracle安装准备主程序
main()
{
isroot
check_init&&sleep1
oracle_useradd&&sleep1
oracle_dirs&&sleep1
oracle_profile&&sleep1
oracle_bash&&sleep1
oracle_limit&&sleep1
oracle_kernal&&sleep1
iptables_selinux&&sleep1
get_oracle&&sleep1
if[$?-eq0];then
echo-e"\n\e[1;32moracle初始化配置已经完成,请确保图形化界面正常工作,执行./database安装程序!\e[0m"
fi
}
main

相关文章

文章浏览阅读773次,点赞6次,收藏9次。【代码】c# json字符...
文章浏览阅读8.7k次,点赞2次,收藏17次。此现象一般定位到远...
文章浏览阅读2.8k次。mysql脚本转化为oracle脚本_mysql建表语...
文章浏览阅读2.2k次。cx_Oracle报错:cx_Oracle DatabaseErr...
文章浏览阅读1.1k次,点赞38次,收藏35次。本文深入探讨了Or...
文章浏览阅读1.5k次。默认自动收集统计信息的时间为晚上10点...