千家信息网

oracle 11g r2 一键配置脚本

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,最近工作需要安装oracle 11g R2在阿里云ECS上,因此编写了一个脚本来完成图形化安装界面之前的准备工作,这样节省时间,shell如下:#!/bin/bashSYSCTL="/etc/sysc
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 新华互联网科技 互联网科技工作委员会主任 互联网科技公司税收优惠 互联网科技资迅 互联网 科技 狮子座互联网科技 万易互联网科技有限公司 镁科技互联网资讯平台 深圳互联网科技怎么样 承德科技产业互联网发展 南平创想时代互联网科技有限公司 黑科技闪耀互联网之光 互联网科技产业特征 晋城互联网科技 工业互联网山东科技大学 上海京穆互联网科技有限公司 江苏苏星互联网科技有限公司 广州梦谷互联网科技有限公司领导 互联网高科技行业有哪些企业 科技互联网专业工作会议发言稿 盛创互联网科技有限公司 互联网 科技馆 广州慧亚互联网科技怎么样 互联网科技项目计划书材料类 知域互联网科技有限公司大骗子 伊宁互联网科技做什么的 宇信科技在杭州互联网排第几 福仕德教育科技互联网 银川新华互联网科技学校原画 现代互联网科技公司
0