Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

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

  1. Архив с дистрибутивом Oracle 11.2.0.2 (например, database-linux-x86-64-11.2.0.2.zip);
  2. Архив с библиотеками Oracle Instant Client 11.2.0.2 (например, instantclient-basic-linux-x86-64-11.2.0.2.0.zip);
  3. Архив с заголовками для разработки Oracle Instant Client 11.2.0.2 SDK (например, instantclient-sdk-linux-x86-64-11.2.0.2.0.zip);
  4. Архив с приложением sqlplus Oracle Instant Client 11.2.0.2 SQL*Plus (например, instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip).

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

# groupadd -r oinstall && \
  groupadd dba && \
  useradd -r -g oinstall -G dba -s /bin/bash -d /opt/oracle -m -k /dev/null oracle

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

# groupadd -r nobody

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

# 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

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

%dba        ALL=(oracle)    NOPASSWD: ALL

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

# chmod 0440 /etc/sudoers.d/oracle

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

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

kernel.shmall = $SHMALL
kernel.shmmax = $SHMMAX
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6815744
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576

$SHMALL — количество страниц памяти. Оно равно размеру оперативной памяти, деленной на размер страницы памяти в системе. Получить это значение можно c помощью команды:

echo "$(free -b|grep Mem|awk '{print$2}')/$(getconf PAGE_SIZE)"|bc

$SHMMAX — максимальное значение разделяемой области памяти в байтах. Рекомендуется устанавливать его в размере 1,5*N*SGA, где N — количество БД (инстансов) Oracle на сервере, SGA — размер области SGA-памяти на БД (4 Гб = 4294967296 байт).

Если значения каких-либо параметров кроме SHMALL в системе больше указанных, изменять их не требуется. Для проверки текущих значений параметров следует использовать вывод команды sysctl -a. Например, для проверки значения параметра kernel.shmall команда проверки будет выглядеть следующим образом:

# sysctl -a | grep kernel.shmall

Те параметры, чьи текущие значения в системе меньше минимальных необходимо добавить в файл /etc/sysctl.conf. После изменения файла /etc/sysctl.conf для применения новых параметров необходимо выполнить следующую команду:

# sysctl -p

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

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

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

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

session    required   pam_limits.so

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

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

  1. Gentoo Linux
    Необходимо создать файл /etc/env.d/99oracle со следующим содержимым:
    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 — название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
    После этого нужно обновить системные переменные окружения следующей командой:
    # env-update && \
      source /etc/profile
    
  2. Debian Linux
    Необходимо добавить в этот файл следующее содержимое:
    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 — название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
    После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
  3. Ubuntu Linux
    Необходимо изменить в файле /etc/environment значение переменной PATH, добавив в конец ее значения следующее содержимое:
    :/opt/oracle/product/11.2.0.2/bin
    
    Также дополнительно необходимо добавить в этот файл следующее содержимое:
    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 — название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
    После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.
  4. Red Hat Enterprise Linux
    В файл /etc/environment необходимо добавить следующее содержимое:
    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 — название основной БД Oracle (будет создана отдельно и, как правило, совпадает с названием компании).
    $PATH нужно заменить результатом выполнения команды:
    # echo $PATH:/opt/oracle/product/11.2.0.2/bin
    
    После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.

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

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

  1. Gentoo Linux (x64)
    Нужно установить следующие пакеты:
    # 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
    
    После выполнения вышеуказанных команд требуется создать необходимые символические ссылки:
    # ln -s /usr/bin/rpm /bin/rpm && \
      ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
    
    Также необходимо установить OpenSSH-сервер с USE-флагом "X", если это еще не сделано:
    # USE="X" emerge openssh
    
  2. Debian Linux (x64)
    Нужно установить следующие пакеты:
    # 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
    
    После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:
    # 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)
    Нужно установить следующие пакеты:
    # 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*
    
    После выполнения вышеуказанных действий требуется создать символическую ссылку:
    # ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
    

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

$ ssh -X user@server

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

$ 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:

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

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

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

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

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

# mkdir /etc/oracle

Далее в этом каталоге требуется создать следующие файлы:

  1. Конфигурационный файл прослушивателя listener.ora
    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 нужно заменить на название основной БД Oracle (обязательно в нижнем регистре!). После создания нужно убрать разрешение на чтение данного файла для всех пользователей:
    # chmod o-r /etc/oracle/listener.ora
    
  2. Конфигурационный файл дескрипторов соединений tnsnames.ora
    $ORACLE_SID = (
      DESCRIPTION = (
        ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
      )
      (CONNECT_DATA = (SERVICE_NAME = $ORACLE_SID))
    )
    
    $ORACLE_SID нужно заменить на название основной БД Oracle (обязательно в нижнем регистре!).

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

# chown -R oracle:oinstall /etc/oracle

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

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

  1. Gentoo Linux
    Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
    1. ora.database
      #!/sbin/runscript
      # ----------------------------------------------------------------------
      # File:    /etc/init.d/ora.database
      # Purpose: Startup Oracle Database(s) defined in /etc/oratab
      # ----------------------------------------------------------------------
      
      depend() {
          need net logger hostname clock
      }
      
      start() {
          source /etc/profile
      
          if [ ! -f $ORACLE_HOME/bin/dbstart ] ; then
              echo "Oracle not started (no dbstart script)"
              return 1
          fi
      
          ebegin "Starting Oracle"
          /bin/su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
          eend $? "Failed to start Oracle"
      }
      
      stop() {
          source /etc/profile
      
          if [ ! -f $ORACLE_HOME/bin/dbshut ] ; then
              echo "Oracle not stopped (no dbshut script)"
              return 1
          fi
      
          ebegin "Stopping Oracle"
          /bin/su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
          eend $? "Failed to stop Oracle"
      }
      
    2. ora.listener
      #!/sbin/runscript
      #----------------------------------------------------------------------
      # File:    /etc/init.d/ora.listener
      # Purpose: Startup Oracle Listeners
      # ----------------------------------------------------------------------
      
      depend() {
          need net
          after ora.database
      }
      
      start() {
          source /etc/profile
      
          if [ ! -f $ORACLE_HOME/bin/lsnrctl ] ; then
              echo "Oracle Listeners not started (no lsnrctl script)"
              return 1
          fi
      
          ebegin "Starting Oracle Listeners"
          /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start LISTENER"
          eend $? "Failed to start Oracle Listeners"
      }
      
      stop() {
          source /etc/profile
      
          if [ ! -f $ORACLE_HOME/bin/lsnrctl ] ; then
              echo "Oracle Listeners not stopped (no lsnrctl script)"
              return 1
          fi
      
          ebegin "Stopping Oracle Listeners"
          /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop LISTENER"
          eend $? "Failed to stop Oracle Listeners"
      }
      
      После создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:
      # chmod +x /etc/init.d/ora.* && \
        rc-update add ora.database default && \
        rc-update add ora.listener default
      
  2. Debian Linux, Red Hat Enterprise Linux
    Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
    1. ora.database
      #!/bin/bash
      # ----------------------------------------------------------------------
      # File:    /etc/init.d/ora.database
      # Purpose: Startup Oracle Database(s) defined in /etc/oratab
      # ----------------------------------------------------------------------
      
      case "$1" in
          start)
              . /etc/environment
              export ORACLE_HOME
              export ORACLE_OWNER
              export ORACLE_BASE
              export TNS_ADMIN
              export NLS_LANG
              export DISABLE_HUGETLBFS
              export TZ
      
              if [ ! -f $ORACLE_HOME/bin/dbstart ] ; then
                  echo "Oracle not started (no dbstart script)"
                  exit 1
              fi
      
              echo "Starting Oracle..."
              /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
      
              exit $?
              ;;
          stop)
              . /etc/environment
              export ORACLE_HOME
              export ORACLE_OWNER
              export ORACLE_BASE
              export TNS_ADMIN
              export NLS_LANG
              export DISABLE_HUGETLBFS
              export TZ
      
              if [ ! -f $ORACLE_HOME/bin/dbshut ] ; then
                  echo "Oracle not stopped (no dbshut script)"
                  exit 1
              fi
      
              echo "Stopping Oracle..."
              /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
      
              exit $?
              ;;
          restart)
              $0 stop
              $0 start
      
              exit $?
              ;;
          *)
              echo "Usage: $0 (start|stop|restart)"
              exit 2
              ;;
      esac
      
    2. ora.listener
      #!/bin/bash
      # ----------------------------------------------------------------------
      # File:    /etc/init.d/ora.listener
      # Purpose: Startup Oracle Listeners
      # ----------------------------------------------------------------------
      
      case "$1" in
          start)
              . /etc/environment
              export ORACLE_HOME
              export ORACLE_OWNER
              export ORACLE_BASE
              export TNS_ADMIN
              export NLS_LANG
              export DISABLE_HUGETLBFS
              export TZ
      
              if [ ! -f $ORACLE_HOME/bin/lsnrctl ] ; then
                  echo "Oracle Listeners not started (no lsnrctl script)"
                  exit 1
              fi
      
              echo "Starting Oracle Listeners..."
              /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start LISTENER"
      
              exit $?
              ;;
          stop)
              . /etc/environment
              export ORACLE_HOME
              export ORACLE_OWNER
              export ORACLE_BASE
              export TNS_ADMIN
              export NLS_LANG
              export DISABLE_HUGETLBFS
              export TZ
      
              if [ ! -f $ORACLE_HOME/bin/lsnrctl ] ; then
                  echo "Oracle Listeners not stopped (no lsnrctl script)"
                  exit 1
              fi
      
              echo "Stopping Oracle Listeners..."
              /bin/su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop LISTENER"
      
              exit $?
              ;;
          restart)
              $0 stop
              $0 start
      
              exit $?
              ;;
          *)
              echo "Usage: $0 (start|stop|restart)"
              exit 2
              ;;
      esac
      
      После создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:
      # chmod +x /etc/init.d/ora.* && \
        update-rc.d ora.database defaults && \
        update-rc.d ora.listener defaults
      

Запуск Oracle

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

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

Установка Oracle Instant Client

Библиотеки Oracle Instant Client необходимы для обеспечения связи приложений с СУБД Oracle. Архивы с Oracle Instant Client 11.2.0.2, Oracle Instant Client 11.2.0.2 SDK (используется при установке модулей Oracle для интерпретаторов) и Oracle Instant Client 11.2.0.2 SQL*Plus необходимо распаковать в директорию /opt/oracle, например:

# unzip instantclient-basic-linux-x86-64-11.2.0.2.0.zip -d /opt/oracle && \
  unzip instantclient-sdk-linux-x86-64-11.2.0.2.0.zip -d /opt/oracle && \
  unzip instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip -d /opt/oracle

После разархивирования необходимо создать символические ссылки для libclntsh.so.11.1 и libocci.so.11.1:

# cd /opt/oracle/instantclient_11_2 && \
  ln -s libclntsh.so.11.1 libclntsh.so && \
  ln -s libocci.so.11.1 libocci.so

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

# chown -R oracle:oinstall /opt/oracle/instantclient_11_2

В завершение необходимо добавить файл с путем к Oracle Instant Client в /etc/ld.so.conf.d и переконфигурировать привязки к динамическим библиотекам:

# echo /opt/oracle/instantclient_11_2 > /etc/ld.so.conf.d/oracle.conf && \
  ldconfig

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

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

  • No labels