Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Необходимые файлы

Архив с дистрибутивом Oracle 11.2.0.2 (например, database-linux-x86-64-11.2.0.2.zip).

Создание пользователя oracle

Code Block
# groupadd -r oinstall && \
  groupadd dba && \
  useradd -r -g oinstall -G dba -s /bin/bash -d /opt/oracle -m oracle

В случае, если в системе не существует группы nobody, ее необходимо создать:

Code Block
# groupadd -r nobody

Также нужно добавить в группу dba некоторых пользователей, чтобы у них было право выполнять команды под пользователем oracle:

Code Block
# usermod -a -G dba nixon && \
  usermod -a -G dba llama && \
  usermod -a -G dba gordon && \
  usermod -a -G dba fly && \
  usermod -a -G dba lodkin && \
  usermod -a -G dba tischenko

После этого необходимо добавить новый конфигурационный файл sudo /etc/sudoers.d/oracle и выдать специальные права доступа к нему:

Code Block
# echo "%dba        ALL=(oracle)    NOPASSWD: ALL" > /etc/sudoers.d/oracle && \
  chmod 0440 /etc/sudoers.d/oracle

Конфигурирование ядра

Code Block
root@hydra:~# apt-get install bc

Для установки и сохранения необходимых параметров ядра следует воспользоваться следующей командой:

Code Block
# setparam() { val=`cat /proc/sys/${1//.//}`; if [ "$1" = "kernel.sem" ] || [ "$2" -gt "$val" ]; then val="$2"; fi; echo "$1 = $val" >> /etc/sysctl.d/oracle.conf; }
  echo -n "Memory per DB [GB]: " && read DB_MEM && \
  echo -n "DB count: " && read DB_COUNT && \
  setparam "kernel.shmall" `echo "$(free -b|grep Mem|awk '{print$2}')/$(getconf PAGE_SIZE)"|bc` && \
  setparam "kernel.shmmax" `echo "$DB_COUNT*$DB_MEM*1024*1024*1024*3/2"|bc` && \
  setparam "kernel.shmmni" 4096 && \
  setparam "kernel.sem" "250 32000 100 128" && \
  setparam "fs.file-max" 6815744 && \
  setparam "fs.aio-max-nr" 262144 && \
  setparam "net.core.rmem_default" 262144 && \
  setparam "net.core.wmem_default" 4194304 && \
  setparam "net.core.rmem_max" 1048576 && \
  setparam "net.core.wmem_max" 1048576 && \
  sysctl -p /etc/sysctl.d/oracle.conf

В ходе выполнения команды выше будет запрошено количество памяти на одну БД (рекомендуемое значение — 4 Гб) и число устанавливаемых БД на сервере (в большинстве случаев — 1).

Установка системных ограничений для пользователя oracle

В файл /etc/security/limits.conf необходимо добавить следующее содержимое:

Code Block
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 64000

В файл /etc/pam.d/login необходимо добавить следующую строку (если ее там нет):

Code Block
session    required   pam_limits.so

Установка переменных окружения

В зависимости от дистрибутива необходимо произвести следующие действия.

  1. Gentoo Linux
    Необходимо создать файл /etc/env.d/99oracle со следующим содержимым:
    Code Block
    ORACLE_BASE="/opt/oracle"
    ORACLE_HOME="/opt/oracle/product/11.2.0.2"
    ORACLE_SID="$ORACLE_SID"
    ORACLE_OWNER="oracle"
    TNS_ADMIN="/etc/oracle"
    NLS_LANG="AMERICAN_RUSSIA.AL32UTF8"
    DISABLE_HUGETLBFS="1"
    PATH="/opt/oracle/product/11.2.0.2/bin"
    ROOTPATH="/opt/oracle/product/11.2.0.2/bin"
    TZ="$TZ"
    
    $TZ нужно заменить на часовой пояс системы (например, Europe/Moscow), $ORACLE_SID — название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
    После этого нужно обновить системные переменные окружения следующей командой:
    Code Block
    # env-update && \
      source /etc/profile
    
  2. Debian Linux
    Необходимо добавить в файл /etc/environment следующее содержимое:
    Code Block
    ORACLE_BASE="/opt/oracle"
    ORACLE_HOME="/opt/oracle/product/11.2.0.2"
    ORACLE_SID="$ORACLE_SID"
    ORACLE_OWNER="oracle"
    TNS_ADMIN="/etc/oracle"
    NLS_LANG="AMERICAN_RUSSIA.AL32UTF8"
    DISABLE_HUGETLBFS="1"
    TZ="$TZ"
    
    $TZ нужно заменить на часовой пояс системы (например, Europe/Moscow), $ORACLE_SID — название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
    Также необходимо добавить в файл /etc/profile перед строкой
    Code Block
    export PATH
    следующее содержимое:
    Code Block
    PATH="$PATH:/opt/oracle/product/11.2.0.2/bin"
    После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
  3. Ubuntu Linux
    Необходимо изменить в файле /etc/environment значение переменной PATH, добавив в конец ее значения следующее содержимое:
    Code Block
    :/opt/oracle/product/11.2.0.2/bin
    
    Также дополнительно необходимо добавить в этот файл следующее содержимое:
    Code Block
    ORACLE_BASE="/opt/oracle"
    ORACLE_HOME="/opt/oracle/product/11.2.0.2"
    ORACLE_SID="$ORACLE_SID"
    ORACLE_OWNER="oracle"
    TNS_ADMIN="/etc/oracle"
    NLS_LANG="AMERICAN_RUSSIA.AL32UTF8"
    DISABLE_HUGETLBFS="1"
    TZ="$TZ"
    
    $TZ нужно заменить на часовой пояс системы (например, Europe/Moscow), $ORACLE_SID — название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
    После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
  4. Red Hat Enterprise Linux
    В файл /etc/environment необходимо добавить следующее содержимое:
    Code Block
    ORACLE_BASE="/opt/oracle"
    ORACLE_HOME="/opt/oracle/product/11.2.0.2"
    ORACLE_SID="$ORACLE_SID"
    ORACLE_OWNER="oracle"
    TNS_ADMIN="/etc/oracle"
    NLS_LANG="AMERICAN_RUSSIA.AL32UTF8"
    DISABLE_HUGETLBFS="1"
    PATH="$PATH"
    TZ="$TZ"
    
    $TZ нужно заменить на часовой пояс системы (например, Europe/Moscow), $ORACLE_SID — название основной БД (будет создана отдельно и, как правило, совпадает с названием компании).
    $PATH нужно заменить результатом выполнения команды:
    Code Block
    # echo $PATH:/opt/oracle/product/11.2.0.2/bin
    
    После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.

Инсталляция Oracle

В зависимости от дистрибутива ОС необходимо произвести следующие дополнительные действия.

  1. Gentoo Linux (x64)
    Нужно установить следующие пакеты:
    Code Block
    # emerge openmotif libXtst libaio rpm && \
      emerge app-emulation/emul-linux-x86-baselibs app-emulation/emul-linux-x86-xlibs app-emulation/emul-linux-x86-compat && \
      USE="pic" emerge glibc binutils
    
    После выполнения вышеуказанных команд требуется создать необходимые символические ссылки:
    Code Block
    # ln -s /usr/bin/rpm /bin/rpm && \
      ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
    
    Также необходимо установить OpenSSH-сервер с USE-флагом "X", если это еще не сделано:
    Code Block
    # USE="X" emerge openssh
    
  2. Ubuntu Linux (x64), Debian Linux (x64)
    Нужно установить следующие пакеты:
    Code Block
    # apt-get install gcc libaio1 libstdc++5 lesstif2 lesstif2-dev libc6-i386 && \
      apt-get install libc6-dev-i386 lib32stdc++6 lib32z1 ia32-libs sysstat && \
      apt-get install rlwrap unixodbc unixodbc-dev elfutils rpm make g++
    
    После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:
    Code Block
    # ln -s /usr/bin/awk /bin/awk && \
      ln -s /usr/bin/rpm /bin/rpm && \
      ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so && \
      ln -s /usr/bin/basename /bin/basename
    
  3. CentOs Linux (x64)
    Нужно установить следующие пакеты:
    Code Block
    # yum install setarch-2* make-3* glibc-2* libaio-0* && \
      yum install compat-libstdc++-33-3* compat-gcc-34-3* compat-gcc-34-c++-3* gcc-4* libXp-1* && \
      yum install openmotif-2* compat-db-4*
    
    После выполнения вышеуказанных действий требуется создать символическую ссылку:
    Code Block
    # ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
    

Далее следует извлечь архив с Oracle 11.2.0.2 во временную директорию и выполнить ssh-вход в систему с использованием "X11Forwarding". Пример команды:

Code Block
$ ssh -X user@server

Для запуска инсталлятора СУБД необходимо запустить установщик следующей командой (пользователю должно быть дано право выполнять команды от имени пользователя oracle):

Code Block
$ chmod o+r ~/.Xauthority && \
  sudo -u oracle -E ./database/runInstaller -ignoreSysPrereqs

Желательно установить Enterprise Edition и включить поддержку русского языка.

При установке не требуется создание БД (выбрать пункт Install database software only на шаге выбора варианта установки), поддержку Oracle RAC включать не нужно (выбрать пункт Single instance database installation на шаге настройки Oracle Grid).

Путь до Oracle Base — /opt/oracle
Путь инсталляции — /opt/oracle/product/11.2.0.2
Путь до Oracle Inventory — /opt/oracle/oraInventory

На замечания установщика о не пройденных проверках готовности системы можно не обращать внимания.

По окончании установки необходимо выполнить следующие 2 файла от пользователя root:

Code Block
# /opt/oracle/oraInventory/orainstRoot.sh && \
  /opt/oracle/product/11.2.0.2/root.sh

Также требуется создать директорию /var/oradata для пользователя oracle, в которой в дальнейшем будут храниться БД Oracle:

Code Block
# mkdir /var/oradata && \
  chmod 750 /var/oradata && \
  chown oracle:oinstall /var/oradata

Создание конфигурационного файла Oracle

Необходимо создать каталог /etc/oracle, в котором будет лежать конфигурационный файл:

Code Block
# mkdir /etc/oracle

Далее в этом каталоге требуется создать конфигурационный файл прослушивателя listener.ora

Code Block
LISTENER = (
  ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)

SID_LIST_LISTENER = (
  SID_LIST =
    (SID_DESC = (SID_NAME = $ORACLE_SID)(ORACLE_HOME = /opt/oracle/product/11.2.0.2))
)

$ORACLE_SID нужно заменить на название основной БД (обязательно в нижнем регистре!). После создания нужно убрать права на чтение данного файла для всех пользователей:

Code Block
# chmod o-r /etc/oracle/listener.ora

После создания файла нужно поменять владельца директории /etc/oracle:

Code Block
# chown -R oracle:oinstall /etc/oracle

Настройка автозапуска Oracle

В зависимости от дистрибутива ОС необходимо произвести следующие действия:

  1. Gentoo Linux
    Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
    1. ora.database — управление БД
      Code Block
      collapsetrue
      #!/sbin/runscript
      
      # АСР "Гидра". Инициализационный скрипт БД Oracle
      # Автор: Петров Н. В.
      # (C) ООО "Латера Софтвер"
      # www.latera.ru | info@latera.ru
      
      
      # Зависимости
      depend() {
        need net logger hostname clock
      }
      
      
      # Запуск
      start() {
        ebegin "Starting Oracle Database"
      
        # Запуск БД
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
      
        # Выход с результатом запуска
        eend $?
      }
      
      # Остановка
      stop() {
        ebegin "Stopping Oracle Database"
      
        # Остановка БД
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
      
        # Выход с результатом остановки
        eend $?
      }
      
    2. ora.listener — управление прослушивателем СУБД
      Code Block
      collapsetrue
      #!/sbin/runscript
      
      # АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle
      # Автор: Петров Н. В.
      # (C) ООО "Латера Софтвер"
      # www.latera.ru | info@latera.ru
      
      
      # Зависимости
      depend() {
        need net logger hostname clock
        after ora.database
      }
      
      
      # Запуск
      start() {
        ebegin "Starting Oracle listener"
      
        # Запуск прослушивателя
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start LISTENER"
      
        # Выход с результатом запуска
        eend $?
      }
      
      # Остановка
      stop() {
        ebegin "Stopping Oracle listener"
      
        # Остановка прослушивателя
        su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop LISTENER"
      
        # Выход с результатом остановки
        eend $?
      }
      
      После создания файлов необходимо выдать разрешение на их запуск и добавить в автозапуск:
      Code Block
      # chmod +x /etc/init.d/ora.* && \
        rc-update add ora.database default && \
        rc-update add ora.listener default
      
  2. Ubuntu Linux, Debian Linux
    Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
    1. ora.database — управление БД
      Code Block
      collapsetrue
      #!/bin/bash
      
      # АСР "Гидра". Инициализационный скрипт БД Oracle
      # Автор: Петров Н. В.
      # (C) ООО "Латера Софтвер"
      # www.latera.ru | info@latera.ru
      
      ### BEGIN INIT INFO
      # Provides:          ora.database
      # Required-Start:    $network
      # Required-Stop:     $network
      # Should-Start:      network-manager
      # Should-Stop:       network-manager
      # Default-Start:     2 3 4 5
      # Default-Stop:      0 1 6
      # Short-Description: Oracle database
      ### END INIT INFO
      
      
      # Коды возврата скрипта
      RET_OK="0"
      RET_BAD_USAGE="1"
      RET_FAILED_RUN="2"
      
      
      # Подключение инит-функций
      . /lib/lsb/init-functions
      
      # Запись в вывод ошибок
      function echo_err {
        echo $@ >&2
      }
      
      # Инициализация окружения
      function init_environment {
        . /etc/environment
        export ORACLE_HOME
        export ORACLE_OWNER
      }
      
      # Выполнение команды
      function run_cmd {
        # Выполнение команды
        eval $@
      
        # Если выполнение было неудачным
        if [ $? != "0" ]; then
          # Завершение выполнения скрипта
          log_end_msg $RET_FAILED_RUN
          exit $RET_FAILED_RUN
        fi
      }
      
      
      # Действие на основе первого параметра вызова скрипта
      case "$1" in
        # Запуск
        start)
          log_daemon_msg "Starting Oracle Database"
      
          # Инициализация окружения
          init_environment
      
          # Запуск БД
          run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/dbstart $ORACLE_HOME\""
      
          # Выход c успехом
          log_end_msg $RET_OK
          exit $RET_OK
          ;;
        # Остановка
        stop)
          log_daemon_msg "Stopping Oracle Database"
      
          # Инициализация окружения
          init_environment
      
          # Остановка БД
          run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/dbshut $ORACLE_HOME\""
      
          # Выход c успехом
          log_end_msg $RET_OK
          exit $RET_OK
          ;;
        # Перезапуск
        restart)
          # Остановка
          $0 stop
          # Запуск
          $0 start
      
          # Выход с успехом
          exit $RET_OK
          ;;
        # Любое другое действие
        *)
          # Вывод сообщения с вариантами использования
          echo_err "Usage: $0 (start|stop|restart)"
      
          # Выход с неудачей
          exit $RET_BAD_USAGE
          ;;
      esac
      
    2. ora.listener — управление прослушивателем СУБД
      Code Block
      collapsetrue
      #!/bin/bash
      
      # АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle
      # Автор: Петров Н. В.
      # (C) ООО "Латера Софтвер"
      # www.latera.ru | info@latera.ru
      
      ### BEGIN INIT INFO
      # Provides:          ora.listener
      # Required-Start:    $network
      # Required-Stop:     $network
      # Should-Start:      network-manager ora.database
      # Should-Stop:       network-manager ora.database
      # Default-Start:     2 3 4 5
      # Default-Stop:      0 1 6
      # Short-Description: Oracle listener
      ### END INIT INFO
      
      
      # Коды возврата скрипта
      RET_OK="0"
      RET_BAD_USAGE="1"
      RET_FAILED_RUN="2"
      
      
      # Подключение инит-функций
      . /lib/lsb/init-functions
      
      # Запись в вывод ошибок
      function echo_err {
        echo $@ >&2
      }
      
      # Инициализация окружения
      function init_environment {
        . /etc/environment
        export ORACLE_HOME
        export ORACLE_OWNER
      }
      
      # Выполнение команды
      function run_cmd {
        # Выполнение команды
        eval $@
      
        # Если выполнение было неудачным
        if [ $? != "0" ]; then
          # Завершение выполнения скрипта
          log_end_msg $RET_FAILED_RUN
          exit $RET_FAILED_RUN
        fi
      }
      
      
      # Действие на основе первого параметра вызова скрипта
      case "$1" in
        # Запуск
        start)
          log_daemon_msg "Starting Oracle listener"
      
          # Инициализация окружения
          init_environment
      
          # Запуск прослушивателя
          run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/lsnrctl start LISTENER\""
      
          # Выход c успехом
          log_end_msg $RET_OK
          exit $RET_OK
          ;;
        # Остановка
        stop)
          log_daemon_msg "Stopping Oracle listener"
      
          # Инициализация окружения
          init_environment
      
          # Остановка прослушивателя
          run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/lsnrctl stop LISTENER\""
      
          # Выход c успехом
          log_end_msg $RET_OK
          exit $RET_OK
          ;;
        # Перезапуск
        restart)
          # Остановка
          $0 stop
          # Запуск
          $0 start
      
          # Выход с успехом
          exit $RET_OK
          ;;
        # Любое другое действие
        *)
          # Вывод сообщения с вариантами использования
          echo_err "Usage: $0 (start|stop|restart)"
      
          # Выход с неудачей
          exit $RET_BAD_USAGE
          ;;
      esac
      
      После создания файлов необходимо выдать разрешение на их запуск и добавить в автозапуск:
      Code Block
      # chmod +x /etc/init.d/ora.* && \
        update-rc.d ora.database defaults && \
        update-rc.d ora.listener defaults
      
  3. Red Hat Enterprise Linux
    Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
    1. ora.database — управление БД
      Code Block
      collapsetrue
      #!/bin/bash
      
      # АСР "Гидра". Инициализационный скрипт БД Oracle
      # Автор: Петров Н. В.
      # (C) ООО "Латера Софтвер"
      # www.latera.ru | info@latera.ru
      
      # Коды возврата скрипта
      RET_OK="0"
      RET_BAD_USAGE="1"
      RET_FAILED_RUN="2"
      
      
      # Запись в вывод ошибок
      function echo_err {
        echo $@ >&2
      }
      
      # Инициализация окружения
      function init_environment {
        . /etc/environment
        export ORACLE_HOME
        export ORACLE_OWNER
      }
      
      # Выполнение команды
      function run_cmd {
        # Выполнение команды
        eval $@
      
        # Если выполнение было неудачным
        if [ $? != "0" ]; then
          # Завершение выполнения скрипта
          log_end_msg $RET_FAILED_RUN
          exit $RET_FAILED_RUN
        fi
      }
      
      
      # Действие на основе первого параметра вызова скрипта
      case "$1" in
        # Запуск
        start)
          echo "Starting Oracle Database..."
      
          # Инициализация окружения
          init_environment
      
          # Запуск БД
          run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/dbstart $ORACLE_HOME\""
      
          # Выход c успехом
          exit $RET_OK
          ;;
        # Остановка
        stop)
          echo "Stopping Oracle Database..."
      
          # Инициализация окружения
          init_environment
      
          # Остановка БД
          run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/dbshut $ORACLE_HOME\""
      
          # Выход c успехом
          exit $RET_OK
          ;;
        # Перезапуск
        restart)
          # Остановка
          $0 stop
          # Запуск
          $0 start
      
          # Выход с успехом
          exit $RET_OK
          ;;
        # Любое другое действие
        *)
          # Вывод сообщения с вариантами использования
          echo_err "Usage: $0 (start|stop|restart)"
      
          # Выход с неудачей
          exit $RET_BAD_USAGE
          ;;
      esac
      
    2. ora.listener — управление прослушивателем СУБД
      Code Block
      collapsetrue
      #!/bin/bash
      
      # АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle
      # Автор: Петров Н. В.
      # (C) ООО "Латера Софтвер"
      # www.latera.ru | info@latera.ru
      
      
      # Коды возврата скрипта
      RET_OK="0"
      RET_BAD_USAGE="1"
      RET_FAILED_RUN="2"
      
      
      # Запись в вывод ошибок
      function echo_err {
        echo $@ >&2
      }
      
      # Инициализация окружения
      function init_environment {
        . /etc/environment
        export ORACLE_HOME
        export ORACLE_OWNER
      }
      
      # Выполнение команды
      function run_cmd {
        # Выполнение команды
        eval $@
      
        # Если выполнение было неудачным
        if [ $? != "0" ]; then
          # Завершение выполнения скрипта
          log_end_msg $RET_FAILED_RUN
          exit $RET_FAILED_RUN
        fi
      }
      
      
      # Действие на основе первого параметра вызова скрипта
      case "$1" in
        # Запуск
        start)
          echo "Starting Oracle listener..."
      
          # Инициализация окружения
          init_environment
      
          # Запуск прослушивателя
          run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/lsnrctl start LISTENER\""
      
          # Выход c успехом
          exit $RET_OK
          ;;
        # Остановка
        stop)
          echo "Stopping Oracle listener..."
      
          # Инициализация окружения
          init_environment
      
          # Остановка прослушивателя
          run_cmd "su $ORACLE_OWNER -c \"$ORACLE_HOME/bin/lsnrctl stop LISTENER\""
      
          # Выход c успехом
          exit $RET_OK
          ;;
        # Перезапуск
        restart)
          # Остановка
          $0 stop
          # Запуск
          $0 start
      
          # Выход с успехом
          exit $RET_OK
          ;;
        # Любое другое действие
        *)
          # Вывод сообщения с вариантами использования
          echo_err "Usage: $0 (start|stop|restart)"
      
          # Выход с неудачей
          exit $RET_BAD_USAGE
          ;;
      esac
      
      После создания файлов необходимо выдать разрешение на их запуск и добавить в автозапуск:
      Code Block
      # chmod +x /etc/init.d/ora.* && \
        update-rc.d ora.database defaults && \
        update-rc.d ora.listener defaults
      

Запуск Oracle

Следует выполнить следующую команду по запуску прослушивателя СУБД:

Code Block
# /etc/init.d/ora.listener start

Завершающий этап

По завершении всех действий необходимо связаться с ответственным за внедрение сотрудником Latera Software, которому следует сообщить о готовности СУБД Oracle к созданию БД.