понедельник, 19 декабря 2011 г.

CentOS: установка Oracle 10gR2

  • 1. Устанавливаем пакеты:
    - compat-db-4.2.52-5.1.i386.rpm
    - sysstat-7.0.2-1.el5.i386.rpm
    - libaio-devel-0.3.106-3.2.i386.rpm
    - libXp-1.0.0-8.1.el5.i386.rpm
    - compat-libstdc++-33
    - gcc

    Выключаем SELINUX
  • 2. Вносим изменения в файл /etc/sysctl.conf - добавляем в него строки:

    kernel.shmmax = 2147483648
    kernel.shmall = 2097152
    kernel.shmmni=4096
    kernel.sem=250 32000 100 128
    fs.file-max=65536
    net.ipv4.ip_local_port_range=1024 65000
    net.core.rmem_default=1048576
    net.core.rmem_max=1048576
    net.core.wmem_default=262144
    net.core.wmem_max=262144

    и применяем настройки

    /sbin/sysctl –p
  • 3. Добавляем следующие строки в файл /etc/security/limits.conf

    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
  • 4. Добавляем следующие строки в файл /etc/pam.d/login

    session required /lib/security/pam_limits.so
    session required pam_limits.so
  • 5. Добавляем следующие строки в файл /etc/profile для того, чтобы пользователю oracle изменить размер и количество строк буфера для отрытых файлов.

    if [ $USER = "oracle" ]; then
      if [ $SHELL = "/bin/ksh" ]; then
          ulimit -p 16384
          ulimit -n 65536
      else
          ulimit -u 16384 -n 65536
      fi
    fi
    
  • 6. Изменяем файл /etc/redhat-release и сохраняем его оригинальную копию:

    cp /etc/redhat-release /etc/redhat-release.original
    echo “redhat-4″ > /etc/redhat-release
  • 7. Создаем пользователя и групу для установки Oracle

    groupadd oinstall
    groupadd dba
    useradd -m -g oinstall -G dba -d /home/oracle -s /bin/bash -c “Oracle Software Owner” oracle
    passwd oracle
  • 8. Распаковываем инсталяционный архив

  • 9. Редактируем .bash_profile для пользователя oracle

    unset USERNAME
    ORACLE_BASE=/home/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_3; export ORACLE_HOME
    ORACLE_SID=orcl; export ORACLE_SID
    PATH=$PATH:$ORACLE_HOME/bin; export PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
  • 10.Создаем startup скрипт для listner-а и instance - /etc/init.d/oracle

    #!/bin/bash
    # source function library
    . /etc/init.d/functions
    
    RETVAL=0
    ORA_OWNER=oracle
    ORA_HOME=/home/oracle/oracle/product/10.2.0/db_1
    
    start() {
    echo -n $"Starting Oracle Listener: "
      if [ $UID -ne 0 ]; then
          RETVAL=1
          failure
      else
    
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" >/dev/null 2>&1
          RETVAL=$?
            [ $RETVAL -eq 0 ] && echo_success
            [ $RETVAL -ne 0 ] && echo_failure
          echo
          echo -n $"Starting Oracle Instance: "
    
        su - $ORA_OWNER -c "$ORA_HOME/bin/sqlplus /nolog"<<-EOF >/dev/null 2>&1
        connect / as sysdba
        startup
        EOF
          RETVAL=$?
            [ $RETVAL -eq 0 ] && echo_success
            [ $RETVAL -ne 0 ] && echo_failure
      
      fi;
    
    echo
    return $RETVAL
    }
    
    stop() {
    echo -n $"Stopping Listener: "
      if [ $UID -ne 0 ]; then
          RETVAL=1
          failure
      else
          su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" >/dev/null 2>&1
          RETVAL=$?
            [ $RETVAL -eq 0 ] && echo_success
            [ $RETVAL -ne 0 ] && echo_failure
          echo
          echo -n $"Stopping Oracle Instance: "
    
          su - $ORA_OWNER -c "$ORA_HOME/bin/sqlplus /nolog"<<-EOF >/dev/null 2>&1
          connect / as sysdba
          shutdown immediate
          EOF
          RETVAL=$?
            [ $RETVAL -eq 0 ] && echo_success
            [ $RETVAL -ne 0 ] && echo_failure
      fi;
    
    echo
    return $RETVAL
    }
    
    restart(){
    stop
    start
    }
    
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    restart
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart}"
    RETVAL=1
    esac
    
    exit $RETVAL
    
    chkconfig --add oracle
    
    chkconfig oracle on