Page tree

Versions Compared

Key

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

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

Архив с дистрибутивом 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
tischenko && \
  usermod -a -G dba netflash && \
  usermod -a -G dba sda && \
  usermod -a -G dba matsak && \
  usermod -a -G dba chornobay

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

Code Block
# echo "%dba        ALL=(oracle)    NOPASSWD: ALL

...

" > /etc/sudoers.d/oracle

...

Code Block

#  && \
  chmod 0440 /etc/sudoers.d/oracle

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

...

Code Block
root@hydra:~# aptitude install bc

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

Code Block

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 помощью команды:

Code Block

echo# 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

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

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

Code Block

# sysctl -a | grep kernel.shmall

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

Code Block

# sysctl -p
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" 1048576 && \
  setparam "net.core.rmem_default" 262144 && \
  setparam "net.core.wmem_default" 262144 && \
  setparam "net.core.rmem_max" 4194304 && \
  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 20474096
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 64000
65536
oracle soft stack 10240

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

Code Block

session    required   pam_limits.so

...

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

  1. Gentoo

    Debian Linux
    Необходимо

    создать

    добавить в файл /etc/

    env.d/99oracle со следующим содержимым

    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="/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

    (будет создана отдельно и, как правило, совпадает с названием компании).

    После этого нужно обновить системные переменные окружения следующей командой:
    Code Block
    
    # env-update && \
      source /etc/profile
    
    Debian Linux
    Необходимо

    Также необходимо добавить в файл /etc/

    environment

    profile перед строкой

    Code Block
    export PATH

    следующее содержимое:

    Code Block
    
    ORACLE_BASEPATH="$PATH:/opt/oracle"
    ORACLE_HOME="//product/11.2.0.2/bin:/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 (будет создана отдельно и, как правило, совпадает с названием компании).
    /OPatch"

    После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.

  2. Ubuntu Linux
    Необходимо изменить в файле /etc/environment значение переменной PATH, добавив в конец ее значения следующее содержимое:

    Code Block
    
    :/opt/oracle/product/11.2.0.2/bin:/opt/oracle/product/11.2.0.2/OPatch
    

    Также дополнительно необходимо добавить в этот файл следующее содержимое:

    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. 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 — название основной БД

    Oracle

    (будет создана отдельно и, как правило, совпадает с названием компании).
    $PATHнужно заменить результатом выполнения команды:

    Code Block
    
    # echo $PATH:/opt/oracle/product/11.2.0.2/bin:/opt/oracle/product/11.2.0.2/OPatch
    

    После этого нужно перевыполнить вход в систему, чтобы переменные окружения обновились.

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

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

  1. Gentoo

    Ubuntu Linux (x64), Debian Linux (x64) squeeze
    Нужно установить следующие пакеты:

    Code Block
    
    # emergeapt-get openmotifinstall libXtstgcc libaio rpm libaio1 libstdc++5 lesstif2 lesstif2-dev libc6-i386 && \
      emerge app-emulation/emul-linux-x86-baselibs app-emulation/emul-linux-x86-xlibs app-emulation/emul-linux-x86-compat apt-get install libc6-dev-i386 lib32stdc++6 lib32z1 ia32-libs sysstat && \
      USE="pic" emerge glibc binutils
    apt-get install rlwrap unixodbc unixodbc-dev elfutils rpm make g++
    

    После выполнения вышеуказанных

    команд

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

    Code Block
    
    # ln -s /usr/bin/awk /bin/awk && \
      ln -s /usr/bin/arch /bin/arch && \
      ln -s /usr/bin/sort /bin/sort && \
      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
    
    Ubuntu Linux (x64),
    && \
      ln -s /usr/bin/basename /bin/basename
    


  2. Debian Linux (x64) wheeze
    Нужно установить следующие пакеты: 

    Code Block
    
    # apt-getaptitude install gcc libaio1 libstdc++5 x11-utils libmotif4 libaio1 lesstif2 lesstif2-dev libc6-i386 && \
      apt-get install libc6-dev-i386 lib32stdc++6 lib32z1 ia32-libs sysstat lib32stdc++6 lib32z1 sysstat rlwrap unixodbc unixodbc-dev elfutils rpm make g++ gcc

    Далее создать ссылки 

    Code Block
    # mkdir /usr/lib64 ;
    ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a && \
    ln  apt-get install rlwrap unixodbc unixodbc-dev elfutils rpm make g++
    
    После выполнения вышеуказанных действий требуется создать необходимые символические ссылки:
    Code Block
    
    # -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/ && \
    ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/ && \
    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/ && \
    ln -s /usr/bin/awk /bin/awk && \
      ln -s /usr/bin/rpm /bin/rpm && \
    ln -s /usr/bin/arch /bin/arch && \
    ln -s /usr/bin/sort /bin/sort && \
    ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so && \
      ln -s /usr/bin/basename /bin/basename

    и изменить файл /etc/fstab добавить строку и перезагрузить машину. Размер указать в половину оперативной памяти

    Code Block
    # See "man tmpfs" and https://forums.oracle.com/forums/thread.jspa?messageID=9057494
    none     /dev/shm  tmpfs     defaults,size=16G    0    0


  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

...

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

Замечание для Debian Wheezy:
при возникновении ошибки с agent nmhs решить ее как описано ниже (Замечание для Debian Wheezy). Подробнее тут:  https://community.oracle.com/message/4396359#4396359
при установке может возникнуть ощибка с установкой emagent. Нажимаем Continue.

По окончании установки необходимо выполнить следующие 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 install -d -ooracle -goinstall -m750 /var/oradata
&& \
  chmod 750 /var/oradata && \
  chown oracle:oinstall /var/oradata

...

Замечание для Debian Wheezy: после установки необходимо проделать следующие действия:

Code Block
oracle$ cd $ORACLE_HOME/sysman/lib ;
make -f ins_emagent.mk "agent"

Будет ошибка, необходимо скопировать последнюю команду gcc и добавить в конец команды

Code Block
-lnmemso -lcore11 -lnnz11

и выполнить последнюю команду заново.
Справочно: http://www.debian-administration.org/article/656/Installing_Oracle11_on_Debian_Squeeze_and_Lenny 

Создание конфигурационного файла 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

...

Code Block

$ORACLE_SID = (
  DESCRIPTION = (
    ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
  )
  (CONNECT_DATA = (SERVICE_NAME = $ORACLE_SID))
)

...

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

Code Block

# chown -R oracle:oinstall /etc/oracle

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

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

...

:

    ora.database — управление БД Oracle Code Blockbashbash
    
    #!/sbin/runscript
    
    # АСР "Гидра". Инициализационный скрипт БД Oracle
    # Автор: Петров Н. В.
    # (C) ООО "Латера Софтвер"
    # www.latera.ru | info@latera.ru
    
    
    # Зависимости
    depend() {
      need net
    }
    
    
    # Инициализация окружения
    function init_environment {
      source /etc/profile
    }
    
    
    # Запуск
    start() {
      ebegin "Starting Oracle Database"
    
      # Инициализация окружения
      init_environment
    
      # Запуск БД
      su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
    
      # Выход с результатом запуска
      eend $?
    }
    
    # Остановка
    stop() {
      ebegin "Stopping Oracle Database"
    
      # Инициализация окружения
      init_environment
    
      # Остановка БД
      su $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
    
      # Выход с результатом остановки
      eend $?
    }
    
    ora.listener — управление прослушивателем СУБД Oracle Code Blockbashbash
    
    #!/sbin/runscript
    
    # АСР "Гидра". Инициализационный скрипт прослушивателя СУБД Oracle
    # Автор: Петров Н. В.
    # (C) ООО "Латера Софтвер"
    # www.latera.ru | info@latera.ru
    
    
    # Зависимости
    depend() {
      need net
    }
    
    
    # Инициализация окружения
    function init_environment {
      source /etc/profile
    }
    
    
    # Запуск
    start() {
      ebegin "Starting Oracle Database"
    
      # Инициализация окружения
      init_environment
    
      # Запуск прослушивателя
      su $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start LISTENER"
    
      # Выход с результатом запуска
      eend $?
    }
    
    # Остановка
    stop() {
      ebegin "Stopping Oracle Database"
    
      # Инициализация окружения
      init_environment
    
      # Остановка прослушивателя
      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
    
    1. Ubuntu Linux, Debian Linux
      Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
      1. ora.database — управление БД

  1. Oracle
      1. Code Block
  2. bash
      1. collapse
  3. bash
      1. true
      1. #!/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 — управление прослушивателем СУБД

  4. Oracle
      1. Code Block
  5. bash
      1. collapse
  6. bash
      1. true
      1. #!/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
        

        После создания файлов необходимо выдать разрешение на их запуск и

  7. произвести установку автозапуска
      1. добавить в автозапуск:

        Code Block
      1. # chmod +x /etc/init.d/ora.* && \
          update-rc.d ora.database defaults && \
          update-rc.d ora.listener defaults
        


    1. Red Hat Enterprise Linux
      Нужно создать следующие 2 файла в /etc/init.d с соответствующим содержимым:
      1. ora.database — управление БД

  8. Oracle
      1. Code Block
  9. bash
      1. collapse
  10. bash
      1. true
      1. #!/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"
        
        
        # Запись в вывод ошибок
        function echo_err {
          echo $@ >&2
        }
        
        # Инициализация окружения
        function init_environment {
          . /etc/environment
          export ORACLE_HOME
          export ORACLE_OWNER
        }
        
        # Выполнение команды
        function run_cmd {
          # Выполнение команды
          eval $@
        
          # Если выполнение было неудачным
          if [ $? != "0" ]; then
            # Завершение выполнения скрипта
            
  11. log
      1. #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 — управление прослушивателем СУБД

  12. Oracle
      1. Code Block
  13. bash
      1. collapse
  14. bash
      1. true
      1. #!/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"
        
        
        # Запись в вывод ошибок
        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
        

        После создания файлов необходимо выдать разрешение на их запуск и

  15. произвести установку автозапуска
      1. добавить в автозапуск:

        Code Block
      1. ~]# 	chmod +x /etc/init.d/ora.* && \
        	chkconfig 
  16. update-rc.d
      1. --add ora.database 
  17. defaults &&
      1. \
        	chkconfig 
  18. update-rc.d
      1. --add	 ora.listener
        
  19. defaults

Запуск Oracle

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

...

:

Code Block

# /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, например:

Code Block

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

Code Block

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

Code Block

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

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

Code Block

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

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

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