Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Архив с дистрибутивом Oracle 1011.2.0.12 (например, 10201_database_-linux_-x86_-64-11.cpio.gz2.0.2.zip);
  2. Архив с патчем библиотеками Oracle 10Instant Client 11.2.0.42 (например, p6810189_10204_Linux-instantclient-basic-linux-x86-64-11.2.0.2.0.zip);
  3. Архив с библиотеками заголовками для разработки Oracle Instant Client 1011.2.0.52 SDK (например, basic-10instantclient-sdk-linux-x86-64-11.2.0.52.0-linux-x64.zip);
  4. Архив с заголовками для разработки приложением sqlplus Oracle Instant Client 1011.2.0.5 SDK2 SQL*Plus (например, sdk-10instantclient-sqlplus-linux-x86-64-11.2.0.52.0-linux-x64.zip).

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

...

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

Code Block
%dba        ALL=(oracle)    NOPASSWD: ALL

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

Code Block

# chmod 0440 /etc/sudoers.d/oracle

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

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

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

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

...

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

...

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

...

  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 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
    
    Также необходимо установить пакет libstdc++5 с помощью, например, следующей команды:
    Code Block
    
    # dpkg -i libstdc++5_3.3.6-18_amd64.deb
    
    После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:
    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 1011.2.0.12 во временную директорию и выполнить ssh-вход в систему с использованием "X11Forwarding". Пример команды:

...

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

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

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

Название инсталляции — OraDb10gR2
Путь инсталляции — /opt/oracle/product/10.2.0.4

При установке не требуется создание БД (выбрать пункт Install database Software software only на шаге выбора конфигурационных опций). На факт того, что установщик не может произвести необходимые проверки системы можно не обращать внимания. При установке допускается следующая ошибка (в диалоговом окне ошибки нажать «Continue»):

...

варианта установки), поддержку 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/1011.2.0.42/root.sh

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

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

Установка патча Oracle 10.2.0.4

Аналогично установке Oracle 10.2.0.1 следует извлечь архив с Oracle 10.2.0.4 во временную директорию и при помощи ssh-соединения с "X11Forwarding" под пользователем oracle необходимо запустить установщик следующей командой:

Code Block

$ chmod o+r ~/.Xauthority && \
  sudo -u oracle ./Disk1/runInstaller -ignoreSysPrereqs

Название инсталляции — OraDb10gR2
Путь инсталляции — /opt/oracle/product/10.2.0.4

На факт того, что установщик не может произвести необходимые проверки системы можно не обращать внимания. По окончании установки необходимо выполнить файл root.sh от пользователя root:

Code Block

# /opt/oracle/product/10.2.0.4/root.sh

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

...

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

...

  1. Gentoo Linux
    Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
    1. ora.database
      Code Block
      bash
      bash
      #!/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
      Code Block
      bash
      bash
      #!/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"
      }
      
      После создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:
      Code Block
      # chmod +x /etc/init.d/ora.* && \
        rc-update add ora.database default && \
        rc-update add ora.listener default
      
  2. Ubuntu Debian Linux, Red Hat Enterprise Linux
    Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
    1. ora.database
      Code Block
      bash
      bash
      #!/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
      Code Block
      bash
      bash
      #!/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
      
      После создания файлов необходимо выдать разрешение на их запуск и произвести установку автозапуска:
      Code Block
      # chmod +x /etc/init.d/ora.* && \
        update-rc.d ora.database defaults && \
        update-rc.d ora.listener defaults
      

...

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

Code Block
# unzip instantclient-basic-10linux-x86-64-11.2.0.52.0-linux-x64.zip -d /opt/oracle && \
  unzip instantclient-sdk-10linux-x86-64-11.2.0.52.0.zip -linux-x64.d /opt/oracle && \
  unzip instantclient-sqlplus-linux-x86-64-11.2.0.2.0.zip -d /opt/oracle

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

Code Block
# cd /opt/oracle/instantclient_1011_2 && \
  ln -s libclntsh.so.1011.1 libclntsh.so && \
  ln -s libocci.so.1011.1 libocci.so

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

Code Block
# chown -R oracle:oinstall /opt/oracle/instantclient_1011_2

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

Code Block
# echo /opt/oracle/instantclient_1011_2 > /etc/ld.so.conf.d/oracle.conf && \
  ldconfig

...

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