zoukankan      html  css  js  c++  java
  • 一键准备Oracle安装

    在Linux下安装Oracle软件之前,有相当工作需要准备,包括建立用户、配置内核参数、配置资源限制参数、配置Oracle用户环境等,十分繁琐。即便十分熟悉,也需要花费一定的精力来准备。说白了,做这些事情有点类似于低水平重复建设,虽没有多大技术含量,却又不得不做。现在将这些准备工作做成脚本,这样可以近乎实现一键准备Oracle安装。

    说明:

    1> 该脚本的执行方式为sh Oracle_Setup_Prepare.sh orcl /u01,两个参数说明见脚本解释部分。

    2> 该脚本中涉及到一个文本文件Package_list,是Oracle安装依赖包的列表。具体内容如下文所示。

    3> 该脚本主要针对于单实例数据库安装。

    4> 安装信息可参考生成的output.log文件

    脚本内容如下:

    [oracle@node3 ~]$ cat Oracle_Setup_Prepare.sh 

    #!/bin/bash
    ############################################
    ###功能:Preparation for Oracle Installation
    ###参数:SID BASE
    ###其中,sid指的是ORACLE_SID
    ###BASE指的是ORACLE_BASE的一级目录,如ORACLE_BASE=/u01/app/oracle,则BASE为/u01
    ############################################
    
    #检查参数个数是否正确
    if [ $# -ne 2 ];then
       echo "$0 SID BASE"
       exit
    fi
    
    SID="$1"
    BASE="$2"
    
    #主机名绑定
    IP=`ifconfig |awk -F'[: ]+' 'NR==2{print $4'}`
    HOST=`hostname`
    sed -i '$a'$IP' '$HOST'' /etc/hosts
    
    #Checking the Package Requirements
    #将需要安装的表的列表贴在Package_list文件中
    awk -F'-[0-9]' '{print $1}' Package_list |awk '{print $1}' |uniq |xargs yum install -y > output.log 2>&1
    
    #Creating Required Operating System Groups and Users
    groupadd -g 800 oinstall
    groupadd -g 801 dba
    groupadd -g 802 oper
    useradd -g oinstall -G dba,oper oracle
    echo oracle | passwd --stdin oracle >> output.log 2>&1
    
    #Configure Kernal Parameters
    sed -i '$afs.aio-max-nr = 1048576' /etc/sysctl.conf
    sed -i '$afs.file-max = 6815744' /etc/sysctl.conf
    sed -i '$akernel.shmall = 2097152' /etc/sysctl.conf
    sed -i '$akernel.shmmax = 536870912' /etc/sysctl.conf
    sed -i '$akernel.shmmni = 4096' /etc/sysctl.conf
    sed -i '$akernel.sem = 250 32000 100 128' /etc/sysctl.conf
    sed -i '$a
    et.ipv4.ip_local_port_range = 9000 65500' /etc/sysctl.conf
    sed -i '$a
    et.core.rmem_default = 262144' /etc/sysctl.conf
    sed -i '$a
    et.core.rmem_max = 4194304' /etc/sysctl.conf
    sed -i '$a
    et.core.wmem_default = 262144' /etc/sysctl.conf
    sed -i '$a
    et.core.wmem_max = 1048586' /etc/sysctl.conf
    sysctl -p >> output.log 2>&1
    
    #Configure Resource Limits
    sed -i '$aoracle           soft    nproc   2047' /etc/security/limits.conf
    sed -i '$aoracle           hard    nproc   16384' /etc/security/limits.conf
    sed -i '$aoracle           soft    nofile  1024' /etc/security/limits.conf
    sed -i '$aoracle           hard    nofile  65536' /etc/security/limits.conf
    
    #Add the following line to the /etc/pam.d/login file, if it does not already exist:
    sed -i '$asession    required     pam_limits.so' /etc/pam.d/login
    
    #Add the following line to the /etc/profile
    sed -i '$aif [[ $USER = "oracle" ]]; then' /etc/profile
    sed -i '$a     if [[ $SHELL = "/bin/ksh" ]]; then' /etc/profile
    sed -i '$a             ulimit -p 16384' /etc/profile
    sed -i '$a             ulimit -n 65536' /etc/profile
    sed -i '$a     else' /etc/profile
    sed -i '$a             ulimit -u 16384 -n 65536' /etc/profile
    sed -i '$a     fi' /etc/profile
    sed -i '$afi' /etc/profile
    source /etc/profile
    
    #Configuring the oracle User's Environment
    sed -i '$aexport ORACLE_SID='$SID'' /home/oracle/.bash_profile
    sed -i '$aexport ORACLE_BASE='$BASE'/app/oracle' /home/oracle/.bash_profile
    sed -i '$aexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1' /home/oracle/.bash_profile
    sed -i '$aexport PATH=$ORACLE_HOME/bin:$PATH' /home/oracle/.bash_profile
    source /home/oracle/.bash_profile
    
    #Creating Required Directories
    mkdir -p $ORACLE_HOME
    chown -R oracle.oinstall $BASE/app
    chmod -R 775 $BASE/app
    
    echo "Preparation For Oracle Installation Is Over!"

    Package_list内容如下:

    [oracle@node3 ~]$ cat Package_list 

    binutils-2.17.50.0.6
    compat-libstdc++-33-3.2.3
    compat-libstdc++-33-3.2.3 (32 bit)
    elfutils-libelf-0.125
    elfutils-libelf-devel-0.125
    gcc-4.1.2
    gcc-c++-4.1.2
    glibc-2.5-24
    glibc-2.5-24 (32 bit)
    glibc-common-2.5
    glibc-devel-2.5
    glibc-devel-2.5 (32 bit)
    glibc-headers-2.5
    ksh-20060214
    libaio-0.3.106
    libaio-0.3.106 (32 bit)
    libaio-devel-0.3.106
    libaio-devel-0.3.106 (32 bit)
    libgcc-4.1.2
    libgcc-4.1.2 (32 bit)
    libstdc++-4.1.2
    libstdc++-4.1.2 (32 bit)
    libstdc++-devel 4.1.2
    make-3.81
    sysstat-7.0.2
    unixODBC-2.2.11
    unixODBC-2.2.11 (32 bit)
    unixODBC-devel-2.2.11
    unixODBC-devel-2.2.11 (32 bit)

     PS: 既然sed每次都是在最后一行追加,其实,用echo "***" >> filename即可实现。

  • 相关阅读:
    WorkFlow入门Step.2—Building a Simple WorkFlowForWF4.0
    AgileEAS.NET敏捷开发平台升级版(丑小鸭的蜕变)[已修复下载链接]
    AgileEAS.NET平台开发实例药店系统视频教程系列索引
    AgileEAS.NET敏捷开发平台及案例下载(持续更新)索引
    WorkFlow入门Step.3—Adding Procedural ElementsForWF4.0
    AgileEAS.NET敏捷开发平台案例药店系统项目综述
    AgileEAS.NET平台开发实例智能升级及服务器部署
    WorkFlow入门Step.4—Adding Procedural ElementsForWF4.0(续)
    AgileEAS.NET平台开发实例药店系统资源文件的替换[大家关心的问题]
    停靠在八楼的2路汽车/ 刀郎:2002年第一场雪
  • 原文地址:https://www.cnblogs.com/ivictor/p/4001567.html
Copyright © 2011-2022 走看看