oracle 11g r2 一键配置脚本
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,最近工作需要安装oracle 11g R2在阿里云ECS上,因此编写了一个脚本来完成图形化安装界面之前的准备工作,这样节省时间,shell如下:#!/bin/bashSYSCTL="/etc/sysc
千家信息网最后更新 2025年11月07日oracle 11g r2 一键配置脚本
最近工作需要安装oracle 11g R2在阿里云ECS上,因此编写了一个脚本来完成图形化安装界面之前的准备工作,这样节省时间,shell如下:
#!/bin/bashSYSCTL="/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=orcllang="AMERICAN_AMERICA.AL32UTF8"#ora_install_dir=/u01#ora_database_dir=/u02ORACLE_BASE=$ora_install_dir/app/oracleORACLE_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(){mem=`free -g |grep 'Mem' | awk '{print $2}'`mem_temp=$(($mem%2))swap_all=`free -m |grep 'Swap' |awk '{print $2}'`if [ $mem_temp == 1 ];then mem=$(($mem+1)) swap=$(($mem/2)) echo -e "\n\e[1;32m 系统内存为 ${mem}GB \e[0m"fiswap_check="`grep -i 'swaptotal' /proc/meminfo |awk '{print $2}'`"if [[ $swap_check = "0" ]];then read -p " swap分区没有设置,请进行设置,输入[y] or [n]:" temp if [ $temp == "y" ];then COUNT=$(($swap * 1024)) echo -e "\n\e[1;31m 开始设置swap分区,/mnt/swap=${swap}GB \e[0m" dd if=/dev/zero of=/mnt/swap bs=1M count=${COUNT} mkswap /mnt/swap swapon /mnt/swap echo "/mnt/swap swap swap defaults 0 0" >> /etc/fstab else echo "请检查或手工设置swap分区后运行该脚本!" exit 1 fielse echo -e "\n\e[1;31m系统内存为${mem}GB 当前swap分区已经配置,大小为${swap_all}MB \e[0m"fi}#检查是否root用户执行脚本isroot(){ if [ $USER != "root" ];then echo -e "\n\e[1;31m The user must be root,and you user is $USER,please su to root.\e[0m" exit 4 fi}#创建oracle用户oracle_useradd(){ if [[ `grep "oracle" /etc/passwd` != "" ]];then echo -e "\e[1;31m User oracle exits, delete and create oracle! \e[0m" && sleep 2 userdel -rf oracle fi if [[ `grep "oinstall" /etc/group` = "" ]];then groupadd oinstall fi if [[ `grep "dba" /etc/group` = "" ]];then groupadd dba fi useradd oracle -g oinstall -G dba && echo $oracle_passwd |passwd oracle --stdin if [ $? -eq 0 ];then echo -e "\n\e[1;32m oracle's password update successfully ---OK! \e[0m" else echo -e "\n\e[1;31m oracle's password set failed. ---NO! \e[0m" fi}#创建oracle使用的目录oracle_dirs(){ read -p "please input oracle install dirname,default /u01": ora_install_dir read -p "please input oracle database dirname,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 -R oracle:oinstall $ora_install_dir chown -R oracle.oinstall $ora_database_dir chmod -R 755 $ora_install_dir $ora_database_dir if [ $? == 0 ];then echo "$ora_install_dir create sucessfully!" echo "$ora_database_dir create sucessfully!" else echo "$ora_install_dir or $ora_database_dir create Failed,please check!" exit 2 fi}#配置profile文件oracle_profile(){if [ -f "/etc/profile.bak" ];then rm -rf /etc/profile >/dev/null cp /etc/profile.bak /etc/profile cat << EOF >>$PROFILEif [ $USER = "oracle" ];then if [ $SHELL = "/bin/ksh" ];then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fifiEOFelse cp /etc/profile /etc/profile.bak cat << EOF >>$PROFILEif [ $USER = "oracle" ];then if [ $SHELL = "/bin/ksh" ];then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fifiEOFfi if [ $? -eq 0 ];then echo -e "\n\e[1;32m $PROFILE update successfully... OK! \e[0m" fi}#配置.bash_profile()oracle_bash(){if [ -f "/home/oracle/.bash_profile.bak" ];thenrm -rf $BASH_PROFILE>/dev/nullcp /home/oracle/.bash_profile.bak $BASH_PROFILE cat <> $BASH_PROFILEexport ORACLE_BASE=$ORACLE_BASEexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbexport ORACLE_SID=$SIDexport ORACLE_TERM=xtermexport ORACLE_OWNER=oracleexport TNS_ADMIN=$ORACLE_HOME/network/adminexport ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/libexport LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/libexport PATH=$PATH:/sbin:/usr/bin:/usr/sbin:$JAVA_HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/lib:$HOME/bin:$ORACLE_HOME/OPatch:.umask 022export NLS_LANG=$langEOFelsecp $BASH_PROFILE /home/oracle/.bash_profile.bakcat <> $BASH_PROFILEexport ORACLE_BASE=$ORACLE_BASEexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbexport ORACLE_SID=$SIDexport ORACLE_TERM=xtermexport ORACLE_OWNER=oracleexport TNS_ADMIN=$ORACLE_HOME/network/adminexport ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/libexport LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/libexport PATH=$PATH:/sbin:/usr/bin:/usr/sbin:$JAVA_HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/lib:$HOME/bin:$ORACLE_HOME/OPatch:.umask 022export NLS_LANG=$langEOFfi if [ $? -eq 0 ];then echo -e "\n\e[1;32m $BASH_PROFILE update successfully...OK! \e[0m" fi}#设置limit资源限制oracle_limit(){if [ -f "/etc/security/limits.conf.bak" ];thenrm -rf $LIMITS>/dev/nullcp /etc/security/limits.conf.bak $LIMITS cat <> $LIMITSoracle soft nproc 8192oracle hard nproc 16384oracle soft nofile 8192oracle hard nofile 65536EOFelsecp $LIMITS /etc/security/limits.conf.bak cat <> $LIMITSoracle soft nproc 8192oracle hard nproc 16384oracle soft nofile 8192oracle hard nofile 65536EOFfi if [ $? -eq 0 ];then echo -e "\n\e[1;32m $LIMITS update sucessfully...OK! \e[0m" fi}#设置内核参数oracle_kernal(){if [ -f /etc/sysctl.conf.bak ];thenrm -rf $SYSCTL>/dev/nullcp /etc/sysctl.conf.bak $SYSCTLsed -i 's/kernel.msgmnb.*/#kernel.msgmnb = 65536/g' $SYSCTLsed -i 's/kernel.msgmax.*/#kernel.msgmax = 65536/g' $SYSCTLsed -i 's/kernel.shmmax.*/#kernel.shmmax = 68719476736/g' $SYSCTLsed -i 's/kernel.shmall.*/#kernel.shmall = 4294967296/g' $SYSCTL cat <> $SYSCTLkernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 40960kernel.sem = 250 32000 100 128kernel.msgmni = 4096kernel.msgmax = 65536kernel.msgmnb = 84000fs.file-max = 6815744net.ipv4.ip_local_port_range = 9000 65500fs.file-max = 6815744net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576fs.aio-max-nr = 1048576net.ipv4.tcp_wmem = 262144 262144 262144net.ipv4.tcp_rmem = 4194304 4194304 4194304EOFelsecp $SYSCTL /etc/sysctl.conf.baksed -i 's/kernel.msgmnb.*/#kernel.msgmnb = 65536/g' $SYSCTLsed -i 's/kernel.msgmax.*/#kernel.msgmax = 65536/g' $SYSCTLsed -i 's/kernel.shmmax.*/#kernel.shmmax = 68719476736/g' $SYSCTLsed -i 's/kernel.shmall.*/#kernel.shmall = 4294967296/g' $SYSCTL cat <> $SYSCTLkernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 40960kernel.sem = 250 32000 100 128kernel.msgmni = 4096kernel.msgmax = 65536kernel.msgmnb = 84000fs.file-max = 6815744net.ipv4.ip_local_port_range = 9000 65500fs.file-max = 6815744net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576fs.aio-max-nr = 1048576net.ipv4.tcp_wmem = 262144 262144 262144net.ipv4.tcp_rmem = 4194304 4194304 4194304EOFfi if [ $? -eq 0 ];then echo -e "\n\e[1;32m $SYSCTL update sucessfully...OK! \e[0m" fi}#关闭iptables and selinuxiptables_selinux(){ service iptables stop && chkconfig iptables off setenforce 0 &>/dev/null sed -i '/SELINUX/s/enforcing/disabled/;/SELINUX/s/permissive/disabled/' /etc/selinux/config}#下载oracle安装文件get_oracle(){ wget http://10.139.96.23:8080/p13390677_112040_Linux-x86-64_1of7.zip -P /home/oracle && wget http://10.139.96.23:8080/p13390677_112040_Linux-x86-64_2of7.zip -P /home/oracle}#oracle安装准备主程序main(){ isroot check_init && sleep 1 check_swap && sleep 1 oracle_useradd && sleep 1 oracle_dirs && sleep 1 oracle_profile && sleep 1 oracle_bash && sleep 1 oracle_limit && sleep 1 oracle_kernal && sleep 1 iptables_selinux && sleep 1 get_oracle && sleep 1 if [ $? -eq 0 ] ;then echo -e "\n\e[1;32m oracle初始化配置已经完成,请确保图形化界面正常工作,执行./database安装程序! \e[0m" fi}main
配置
内存
检查
脚本
系统
工作
图形
文件
版本
用户
界面
准备
主程序
内核
参数
大小
情况
手工
时间
核数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
i5更新后显示服务器无效
河钢集团软件开发岗位可以吗
审计网络安全
灯塔交易所服务器是什么
swift服务器
物流与网络安全
天津浪潮服务器续保维修
服务器改硬盘模式重装系统
鑫耀网络技术工作室
谁在履行网络安全
网络安全和数据安全教育
进口网络视频服务器批发
创优网络技术有限公司是真的吗
嵌入式软件开发师怎么样
华教网络技术有限公司
网络安全正式实施时间
运城市网络安全宣传片
网络安全进校园手稿
网络技术战略合作合同范本
2u服务器接口介绍
南京应用软件开发需要多少钱
浙江服务器虚拟化
邵阳市网络安全周活动
ftp服务器账号怎么登录
淘宝直播协议软件开发
海口应该软件开发介绍
广元网络安全服务厂家
浪潮服务器后置硬盘无反应
mx4服务器
网络安全2020小知识